Chris@0: state = $state; Chris@0: } Chris@0: Chris@0: /** Chris@0: * Collects all path roots. Chris@0: * Chris@0: * @param \Drupal\Core\Routing\RouteBuildEvent $event Chris@0: * The route build event. Chris@0: */ Chris@0: public function onRouteAlter(RouteBuildEvent $event) { Chris@0: $collection = $event->getRouteCollection(); Chris@0: foreach ($collection->all() as $route) { Chris@0: $bits = explode('/', ltrim($route->getPath(), '/')); Chris@0: $this->pathRoots[$bits[0]] = $bits[0]; Chris@0: } Chris@0: } Chris@0: Chris@0: /** Chris@0: * {@inheritdoc} Chris@0: */ Chris@0: public function onRouteFinished() { Chris@0: $this->state->set('router.path_roots', array_keys($this->pathRoots)); Chris@0: $this->pathRoots = []; Chris@0: } Chris@0: Chris@0: /** Chris@0: * {@inheritdoc} Chris@0: */ Chris@0: public static function getSubscribedEvents() { Chris@0: $events = []; Chris@0: // Try to set a low priority to ensure that all routes are already added. Chris@0: $events[RoutingEvents::ALTER][] = ['onRouteAlter', -1024]; Chris@0: $events[RoutingEvents::FINISHED][] = ['onRouteFinished']; Chris@0: return $events; Chris@0: } Chris@0: Chris@0: }