function YamlRouteDiscovery::collectRoutes
Same name and namespace in other branches
- main core/lib/Drupal/Core/Routing/YamlRouteDiscovery.php \Drupal\Core\Routing\YamlRouteDiscovery::collectRoutes()
Creates a collection of routes to add to the route builder.
Return value
iterable<int, \Symfony\Component\Routing\RouteCollection> The routes.
Overrides StaticRouteDiscoveryBase::collectRoutes
File
-
core/
lib/ Drupal/ Core/ Routing/ YamlRouteDiscovery.php, line 34
Class
- YamlRouteDiscovery
- Reads routing.yml files provided by modules and creates route collections.
Namespace
Drupal\Core\RoutingCode
protected function collectRoutes() : iterable {
foreach ($this->getRouteDefinitions() as $routes) {
$collection = new RouteCollection();
// The top-level 'routes_callback' is a list of methods in controller
// syntax, see \Drupal\Core\Controller\ControllerResolver. These methods
// should return a set of \Symfony\Component\Routing\Route objects, either
// in an associative array keyed by the route name, which will be iterated
// over and added to the collection for this provider, or as a new
// \Symfony\Component\Routing\RouteCollection object, which will be added
// to the collection.
if (isset($routes['route_callbacks'])) {
foreach ($routes['route_callbacks'] as $route_callback) {
$callback = $this->controllerResolver
->getControllerFromDefinition($route_callback);
if ($callback_routes = call_user_func($callback)) {
// If a RouteCollection is returned, add the whole collection.
if ($callback_routes instanceof RouteCollection) {
yield $callback_routes;
}
else {
foreach ($callback_routes as $name => $callback_route) {
$collection->add($name, $callback_route);
}
}
}
}
unset($routes['route_callbacks']);
}
foreach ($routes as $name => $route_info) {
if (isset($route_info['alias'])) {
$alias = $collection->addAlias($name, $route_info['alias']);
$deprecation = $route_info['deprecated'] ?? NULL;
if (isset($deprecation)) {
$alias->setDeprecated($deprecation['package'], $deprecation['version'], $deprecation['message'] ?? '');
}
continue;
}
$route_info += $this->resetGlobals();
$route = $this->createRoute($route_info['path'], $route_info['defaults'], $route_info['requirements'], $route_info['options'], $route_info['host'], $route_info['schemes'], $route_info['methods'], $route_info['condition'] ?? NULL);
$collection->add($name, $route);
}
yield $collection;
}
}
Buggy or inaccurate documentation? Please file an issue. Need support? Need help programming? Connect with the Drupal community.