3 namespace Drupal\Core\Routing;
5 use Symfony\Cmf\Component\Routing\PagedRouteProviderInterface;
6 use Symfony\Component\HttpFoundation\Request;
9 * A Route Provider front-end for all Drupal-stored routes.
11 class RouteProviderLazyBuilder implements PreloadableRouteProviderInterface, PagedRouteProviderInterface {
14 * The route provider service.
16 * @var \Drupal\Core\Routing\RouteProviderInterface
18 protected $routeProvider;
21 * The route building service.
23 * @var \Drupal\Core\Routing\RouteBuilderInterface
25 protected $routeBuilder;
28 * Flag to determine if the router has been rebuilt.
32 protected $rebuilt = FALSE;
35 * RouteProviderLazyBuilder constructor.
37 * @param \Drupal\Core\Routing\RouteProviderInterface $route_provider
38 * The route provider service.
39 * @param \Drupal\Core\Routing\RouteBuilderInterface $route_builder
40 * The route building service.
42 public function __construct(RouteProviderInterface $route_provider, RouteBuilderInterface $route_builder) {
43 $this->routeProvider = $route_provider;
44 $this->routeBuilder = $route_builder;
48 * Gets the real route provider service and rebuilds the router id necessary.
50 * @return \Drupal\Core\Routing\RouteProviderInterface
51 * The route provider service.
53 protected function getRouteProvider() {
54 if (!$this->rebuilt) {
55 $this->routeBuilder->rebuild();
56 $this->rebuilt = TRUE;
58 return $this->routeProvider;
64 public function getRouteCollectionForRequest(Request $request) {
65 return $this->getRouteProvider()->getRouteCollectionForRequest($request);
71 public function getRouteByName($name) {
72 return $this->getRouteProvider()->getRouteByName($name);
78 public function preLoadRoutes($names) {
79 return $this->getRouteProvider()->preLoadRoutes($names);
85 public function getRoutesByNames($names) {
86 return $this->getRouteProvider()->getRoutesByNames($names);
92 public function getRoutesByPattern($pattern) {
93 return $this->getRouteProvider()->getRoutesByPattern($pattern);
99 public function getAllRoutes() {
100 return $this->getRouteProvider()->getAllRoutes();
106 public function reset() {
107 // Don't call getRouteProvider as this is results in recursive rebuilds.
108 return $this->routeProvider->reset();
114 public function getRoutesPaged($offset, $length = NULL) {
115 return $this->getRouteProvider()->getRoutesPaged($offset, $length);
121 public function getRoutesCount() {
122 return $this->getRouteProvider()->getRoutesCount();
126 * Determines if the router has been rebuilt.
129 * TRUE is the router has been rebuilt, FALSE if not.
131 public function hasRebuilt() {
132 return $this->rebuilt;