Exemplo n.º 1
0
 /**
  * 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);
         }
     }
 }