/** * Override the routes for each content entity that has been configured by * entity layout. * * @param RouteCollection $collection */ protected function buildEntityLayoutRoutes(RouteCollection $collection) { $requirements = ['_entity_access' => 'entity_layout.view']; $parameters = ['entity_layout' => ['type' => 'entity:entity_layout']]; /* @var $entity_layout EntityLayoutInterface */ foreach ($this->entityLayoutManager->getAll() as $entity_layout) { $target_entity_id = $entity_layout->getTargetEntityType(); $entities = $this->loadEntities($target_entity_id, $entity_layout->getTargetBundle()); $entity_parameters = [$target_entity_id => ['type' => "entity:{$target_entity_id}"]]; foreach ($entities as $entity) { $entity_path = $entity->toUrl('canonical')->getInternalPath(); $route_name = "entity_layout.{$entity->getEntityTypeId()}.{$entity->id()}"; $defaults = ['_entity_view' => 'entity_layout', '_title' => $entity->label(), 'entity_layout' => $entity_layout->id(), 'entity_type_id' => $entity->getEntityTypeId(), $target_entity_id => $entity->id()]; $options = ['_entity_layout' => TRUE, 'parameters' => $parameters + $entity_parameters]; $route = new Route($entity_path, $defaults, $requirements, $options); $collection->add($route_name, $route); } } }