public function RouteProvider::preLoadRoutes in Drupal 8
Same name in this branch
- 8 core/tests/Drupal/KernelTests/RouteProvider.php \Drupal\KernelTests\RouteProvider::preLoadRoutes()
- 8 core/lib/Drupal/Core/Routing/RouteProvider.php \Drupal\Core\Routing\RouteProvider::preLoadRoutes()
Same name and namespace in other branches
- 9 core/lib/Drupal/Core/Routing/RouteProvider.php \Drupal\Core\Routing\RouteProvider::preLoadRoutes()
- 10 core/lib/Drupal/Core/Routing/RouteProvider.php \Drupal\Core\Routing\RouteProvider::preLoadRoutes()
Pre-load routes by their names using the provided list of names.
This method exists in order to allow performance optimizations. It allows pre-loading serialized routes that may latter be retrieved using ::getRoutesByName()
Parameters
string[] $names: Array of route names to load.
Overrides PreloadableRouteProviderInterface::preLoadRoutes
1 call to RouteProvider::preLoadRoutes()
- RouteProvider::getRoutesByNames in core/
lib/ Drupal/ Core/ Routing/ RouteProvider.php - Find many routes by their names using the provided list of names.
File
- core/
lib/ Drupal/ Core/ Routing/ RouteProvider.php, line 217
Class
- RouteProvider
- A Route Provider front-end for all Drupal-stored routes.
Namespace
Drupal\Core\RoutingCode
public function preLoadRoutes($names) {
if (empty($names)) {
throw new \InvalidArgumentException('You must specify the route names to load');
}
$routes_to_load = array_diff($names, array_keys($this->routes), array_keys($this->serializedRoutes));
if ($routes_to_load) {
$cid = static::ROUTE_LOAD_CID_PREFIX . hash('sha512', serialize($routes_to_load));
if ($cache = $this->cache
->get($cid)) {
$routes = $cache->data;
}
else {
try {
$result = $this->connection
->query('SELECT name, route FROM {' . $this->connection
->escapeTable($this->tableName) . '} WHERE name IN ( :names[] )', [
':names[]' => $routes_to_load,
]);
$routes = $result
->fetchAllKeyed();
$this->cache
->set($cid, $routes, Cache::PERMANENT, [
'routes',
]);
} catch (\Exception $e) {
$routes = [];
}
}
$this->serializedRoutes += $routes;
}
}