/** * Tests setRouteOptions() with an _entity_form route. * * @covers ::setRouteOptions * @covers ::getControllerClass * @covers ::getEntityTypes * @covers ::setParametersFromReflection * @covers ::setParametersFromEntityInformation */ public function testSetRouteOptionsWithEntityFormRoute() { $this->setupEntityTypes(); $route = new Route('/example/{entity_test}', array('_entity_form' => 'entity_test.edit')); $defaults = $route->getDefaults(); $this->entityResolverManager->setRouteOptions($route); $this->assertEquals($defaults, $route->getDefaults()); $parameters = $route->getOption('parameters'); $this->assertEquals(array('entity_test' => array('type' => 'entity:entity_test')), $parameters); }
/** * Tests setRouteOptions() with an _entity_form route for an add form. * * @covers ::setRouteOptions * @covers ::getControllerClass * @covers ::getEntityTypes * @covers ::setParametersFromReflection * @covers ::setParametersFromEntityInformation */ public function testSetRouteOptionsWithEntityAddFormRoute() { $this->setupEntityTypes(); $route = new Route('/example/add', array( '_entity_form' => 'entity_test.add', )); $defaults = $route->getDefaults(); $this->entityResolverManager->setRouteOptions($route); $this->assertEquals($defaults, $route->getDefaults()); $this->assertFalse($route->hasOption('parameters')); }
/** * Tests an _entity_form route where a non-entity parameter is first. * * The {argument} preceding {entity_test} in route path, is upcasting with a * custom param converter. * * @covers ::setRouteOptions * @covers ::getControllerClass * @covers ::getEntityTypes * @covers ::setParametersFromReflection * @covers ::setParametersFromEntityInformation */ public function testSetRouteOptionsWithEntityFormRouteAndArgument() { $this->setupEntityTypes(); $route = new Route('/example/{argument}/{entity_test}', ['_entity_form' => 'entity_test.edit']); // Add {argument} parameter configuration. In this case {argument} is // upcasted by a custom param converter 'argument_type'. $route->setOption('parameters', ['argument' => ['type' => 'argument_type']]); $defaults = $route->getDefaults(); $this->entityResolverManager->setRouteOptions($route); $this->assertEquals($defaults, $route->getDefaults()); $parameters = $route->getOption('parameters'); $expect = ['argument' => ['type' => 'argument_type'], 'entity_test' => ['type' => 'entity:entity_test']]; $this->assertEquals($expect, $parameters); }
/** * Applies parameter converters to route parameters. * * @param \Drupal\Core\Routing\RouteBuildEvent $event * The event to process. */ public function onRoutingRouteAlterSetType(RouteBuildEvent $event) { foreach ($event->getRouteCollection() as $route) { $this->resolverManager->setRouteOptions($route); } }