class YamlRouteDiscovery
Same name and namespace in other branches
- main core/lib/Drupal/Core/Routing/YamlRouteDiscovery.php \Drupal\Core\Routing\YamlRouteDiscovery
Reads routing.yml files provided by modules and creates route collections.
Hierarchy
- class \Drupal\Core\Routing\StaticRouteDiscoveryBase implements \Symfony\Component\EventDispatcher\EventSubscriberInterface
- class \Drupal\Core\Routing\YamlRouteDiscovery extends \Drupal\Core\Routing\StaticRouteDiscoveryBase
Expanded class hierarchy of YamlRouteDiscovery
1 file declares its use of YamlRouteDiscovery
- RouteBuilderTest.php in core/
tests/ Drupal/ Tests/ Core/ Routing/ RouteBuilderTest.php
1 string reference to 'YamlRouteDiscovery'
- core.services.yml in core/
core.services.yml - core/core.services.yml
1 service uses YamlRouteDiscovery
File
-
core/
lib/ Drupal/ Core/ Routing/ YamlRouteDiscovery.php, line 15
Namespace
Drupal\Core\RoutingView source
class YamlRouteDiscovery extends StaticRouteDiscoveryBase {
public function __construct(protected readonly ModuleHandlerInterface $moduleHandler, protected readonly ControllerResolverInterface $controllerResolver) {
}
/**
* {@inheritdoc}
*/
protected static function getPriority() : int {
// Runs before PHP Attribute discovery.
return 100;
}
/**
* {@inheritdoc}
*/
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;
}
}
/**
* Retrieves all defined routes from .routing.yml files.
*
* @return array
* The defined routes, keyed by provider.
*/
protected function getRouteDefinitions() {
// Always instantiate a new YamlDiscovery object so that we always search on
// the up-to-date list of modules.
$discovery = new YamlDiscovery('routing', $this->moduleHandler
->getModuleDirectories());
return $discovery->findAll();
}
}
Members
| Title Sort descending | Modifiers | Object type | Summary | Overriden Title | Overrides |
|---|---|---|---|---|---|
| StaticRouteDiscoveryBase::createRoute | protected | function | Creates a route. | ||
| StaticRouteDiscoveryBase::getSubscribedEvents | public static | function | |||
| StaticRouteDiscoveryBase::onRouteBuild | public | function | Adds routes to the route builder. | ||
| StaticRouteDiscoveryBase::resetGlobals | protected | function | Gets an array of default values for a route. | ||
| YamlRouteDiscovery::collectRoutes | protected | function | Creates a collection of routes to add to the route builder. | Overrides StaticRouteDiscoveryBase::collectRoutes | |
| YamlRouteDiscovery::getPriority | protected static | function | Determines the priority of the route build event listener. | Overrides StaticRouteDiscoveryBase::getPriority | |
| YamlRouteDiscovery::getRouteDefinitions | protected | function | Retrieves all defined routes from .routing.yml files. | 1 | |
| YamlRouteDiscovery::__construct | public | function |
Buggy or inaccurate documentation? Please file an issue. Need support? Need help programming? Connect with the Drupal community.