function MenuTreeStorage::loadByRoute
Same name in other branches
- 8.9.x core/lib/Drupal/Core/Menu/MenuTreeStorage.php \Drupal\Core\Menu\MenuTreeStorage::loadByRoute()
- 10 core/lib/Drupal/Core/Menu/MenuTreeStorage.php \Drupal\Core\Menu\MenuTreeStorage::loadByRoute()
- 11.x core/lib/Drupal/Core/Menu/MenuTreeStorage.php \Drupal\Core\Menu\MenuTreeStorage::loadByRoute()
Overrides MenuTreeStorageInterface::loadByRoute
File
-
core/
lib/ Drupal/ Core/ Menu/ MenuTreeStorage.php, line 684
Class
- MenuTreeStorage
- Provides a menu tree storage using the database.
Namespace
Drupal\Core\MenuCode
public function loadByRoute($route_name, array $route_parameters = [], $menu_name = NULL) {
// Sort the route parameters so that the query string will be the same.
asort($route_parameters);
// Since this will be urlencoded, it's safe to store and match against a
// text field.
// @todo Standardize an efficient way to load by route name and parameters
// in place of system path. https://www.drupal.org/node/2302139
$param_key = $route_parameters ? UrlHelper::buildQuery($route_parameters) : '';
$query = $this->connection
->select($this->table, NULL, $this->options);
$query->fields($this->table, $this->definitionFields());
$query->condition('route_name', $route_name);
$query->condition('route_param_key', $param_key);
if ($menu_name) {
$query->condition('menu_name', $menu_name);
}
// Make the ordering deterministic.
$query->orderBy('depth');
$query->orderBy('weight');
$query->orderBy('id');
$loaded = $this->safeExecuteSelect($query)
->fetchAllAssoc('id', \PDO::FETCH_ASSOC);
foreach ($loaded as $id => $link) {
$loaded[$id] = $this->prepareLink($link);
}
return $loaded;
}
Buggy or inaccurate documentation? Please file an issue. Need support? Need help programming? Connect with the Drupal community.