routeProvider = $route_provider; $this->routeBuilder = $route_builder; } /** * Gets the real route provider service and rebuilds the router id necessary. * * @return \Drupal\Core\Routing\RouteProviderInterface * The route provider service. */ protected function getRouteProvider() { if (!$this->rebuilt && !$this->rebuilding) { $this->routeBuilder->rebuild(); } return $this->routeProvider; } /** * {@inheritdoc} */ public function getRouteCollectionForRequest(Request $request) { return $this->getRouteProvider()->getRouteCollectionForRequest($request); } /** * {@inheritdoc} */ public function getRouteByName($name) { return $this->getRouteProvider()->getRouteByName($name); } /** * {@inheritdoc} */ public function preLoadRoutes($names) { return $this->getRouteProvider()->preLoadRoutes($names); } /** * {@inheritdoc} */ public function getRoutesByNames($names) { return $this->getRouteProvider()->getRoutesByNames($names); } /** * {@inheritdoc} */ public function getRoutesByPattern($pattern) { return $this->getRouteProvider()->getRoutesByPattern($pattern); } /** * {@inheritdoc} */ public function getAllRoutes() { return $this->getRouteProvider()->getAllRoutes(); } /** * {@inheritdoc} */ public function reset() { // Don't call getRouteProvider as this is results in recursive rebuilds. return $this->routeProvider->reset(); } /** * Determines if the router has been rebuilt. * * @return bool * TRUE is the router has been rebuilt, FALSE if not. */ public function hasRebuilt() { return $this->rebuilt; } /** * {@inheritdoc} */ public static function getSubscribedEvents(): array { $events[RoutingEvents::DYNAMIC][] = ['routerRebuilding', 3000]; $events[RoutingEvents::FINISHED][] = ['routerRebuildFinished', -3000]; return $events; } /** * Sets the router rebuilding flag to TRUE. */ public function routerRebuilding() { $this->rebuilding = TRUE; } /** * Sets the router rebuilding flag to FALSE. */ public function routerRebuildFinished() { $this->rebuilding = FALSE; $this->rebuilt = TRUE; } }