public function EntityRouteProviderSubscriber::onDynamicRouteEvent

public EntityRouteProviderSubscriber::onDynamicRouteEvent(RouteBuildEvent $event)

Provides routes on route rebuild time.

Parameters

\Drupal\Core\Routing\RouteBuildEvent $event: The route build event.

File

core/lib/Drupal/Core/EventSubscriber/EntityRouteProviderSubscriber.php, line 39

Class

EntityRouteProviderSubscriber
Ensures that routes can be provided by entity types.

Namespace

Drupal\Core\EventSubscriber

Code

public function onDynamicRouteEvent(RouteBuildEvent $event) {
  $route_collection = $event->getRouteCollection();
  foreach ($this->entityManager->getDefinitions() as $entity_type) {
    if ($entity_type->hasRouteProviders()) {
      foreach ($this->entityManager->getRouteProviders($entity_type->id()) as $route_provider) {
        // Allow to both return an array of routes or a route collection,
        // like route_callbacks in the routing.yml file.

        $routes = $route_provider->getRoutes($entity_type);
        if ($routes instanceof RouteCollection) {
          $routes = $routes->all();
        }
        foreach ($routes as $route_name => $route) {
          // Don't override existing routes.
          if (!$route_collection->get($route_name)) {
            $route_collection->add($route_name, $route);
          }
        }
      }
    }
  }
}

© 2001–2016 by the original authors
Licensed under the GNU General Public License, version 2 and later.
Drupal is a registered trademark of Dries Buytaert.
https://api.drupal.org/api/drupal/core!lib!Drupal!Core!EventSubscriber!EntityRouteProviderSubscriber.php/function/EntityRouteProviderSubscriber::onDynamicRouteEvent/8.1.x