diff --git a/core/lib/Drupal/Core/EventSubscriber/AccessSubscriber.php b/core/lib/Drupal/Core/EventSubscriber/AccessSubscriber.php index 6f18839..33e7274 100644 --- a/core/lib/Drupal/Core/EventSubscriber/AccessSubscriber.php +++ b/core/lib/Drupal/Core/EventSubscriber/AccessSubscriber.php @@ -71,7 +71,7 @@ public function onRoutingRouteAlterSetAccessCheck(RouteBuildEvent $event) { static function getSubscribedEvents() { $events[KernelEvents::REQUEST][] = array('onKernelRequestAccessCheck', 30); // Setting very low priority to ensure access checks are run after alters. - $events[RoutingEvents::ALTER][] = array('onRoutingRouteAlterSetAccessCheck', 0); + $events[RoutingEvents::ALTER][] = array('onRoutingRouteAlterSetAccessCheck', -50); return $events; } diff --git a/core/modules/views/lib/Drupal/views/EventSubscriber/RouteSubscriber.php b/core/modules/views/lib/Drupal/views/EventSubscriber/RouteSubscriber.php index ccc5d5f..9ff6dd7 100644 --- a/core/modules/views/lib/Drupal/views/EventSubscriber/RouteSubscriber.php +++ b/core/modules/views/lib/Drupal/views/EventSubscriber/RouteSubscriber.php @@ -125,6 +125,8 @@ public function dynamicRoutes(RouteBuildEvent $event) { $view->destroy(); } } + + $this->state->set('views.view_route_names', $this->viewRouteNames); } /** diff --git a/core/modules/views/lib/Drupal/views/Plugin/views/display/PathPluginBase.php b/core/modules/views/lib/Drupal/views/Plugin/views/display/PathPluginBase.php index 2b0ff9b..7fc4c02 100644 --- a/core/modules/views/lib/Drupal/views/Plugin/views/display/PathPluginBase.php +++ b/core/modules/views/lib/Drupal/views/Plugin/views/display/PathPluginBase.php @@ -258,9 +258,14 @@ public function executeHookMenu($callbacks) { $path = implode('/', $bits); + $view_route_names = $this->state->get('views.view_route_names') ?: array(); + if ($path) { + // Some views might override existing paths, so we have to set the route + // name based upon the altering. + $view_id_display = "{$this->view->storage->id()}.{$this->display['id']}"; $items[$path] = array( - 'route_name' => "view.{$this->view->storage->id()}.{$this->display['id']}", + 'route_name' => isset($view_route_names[$view_id_display]) ? $view_route_names[$view_id_display] : "view.$view_id_display", // Identify URL embedded arguments and correlate them to a handler. 'load arguments' => array($this->view->storage->id(), $this->display['id'], '%index'), );