RouteSubscriber::alterRoutes

protected RouteSubscriber::alterRoutes(RouteCollection $collection)

Alters existing routes for a specific collection.

Parameters

\Symfony\Component\Routing\RouteCollection $collection: The route collection for adding routes.

Overrides RouteSubscriberBase::alterRoutes

File

core/modules/views/src/EventSubscriber/RouteSubscriber.php, line 134

Class

RouteSubscriber
Builds up the routes of all views.

Namespace

Drupal\views\EventSubscriber

Code

protected function alterRoutes(RouteCollection $collection) {
  foreach ($this->getViewsDisplayIDsWithRoute() as $pair) {
    list($view_id, $display_id) = explode('.', $pair);
    $view = $this->viewStorage->load($view_id);
    // @todo This should have an executable factory injected.
    if (($view = $view->getExecutable()) && $view instanceof ViewExecutable) {
      if ($view->setDisplay($display_id) && $display = $view->displayHandlers->get($display_id)) {
        if ($display instanceof DisplayRouterInterface) {
          // If the display returns TRUE a route item was found, so it does not
          // have to be added.
          $view_route_names = $display->alterRoutes($collection);
          $this->viewRouteNames = $view_route_names + $this->viewRouteNames;
          foreach ($view_route_names as $id_display => $route_name) {
            $view_route_name = $this->viewsDisplayPairs[$id_display];
            unset($this->viewsDisplayPairs[$id_display]);
            $collection->remove("views.$view_route_name");
          }
        }
      }
      $view->destroy();
    }
  }
}
doc_Drupal
2016-10-29 09:39:26
Comments
Leave a Comment

Please login to continue.