public static function WeMegaMenuBuilder::getMenuTree in Drupal Mega Menu 8
Same name and namespace in other branches
- 8.x src/WeMegaMenuBuilder.php \Drupal\we_megamenu\WeMegaMenuBuilder::getMenuTree()
Get menu tree we_megamenu.
Parameters
string $menu_name: Public static function getMenuTree menu_name.
\Drupal\Core\Menu\MenuLinkTreeElement $items: Public static function getMenuTree items.
int $level: Public static function getMenuTree level.
Return value
array Public static function getMenuTree array.
1 call to WeMegaMenuBuilder::getMenuTree()
- WeMegaMenuBuilder::getMenuTreeOrder in src/
WeMegaMenuBuilder.php - Get menu tree sorted by weight ascending.
File
- src/
WeMegaMenuBuilder.php, line 24
Class
Namespace
Drupal\we_megamenuCode
public static function getMenuTree($menu_name, $backend = TRUE, $items = [], $level = 0) {
$result = [];
if ($level == 0) {
$menu_active_trail = Drupal::service('menu.active_trail')
->getActiveTrailIds($menu_name);
$menu_tree_parameters = (new MenuTreeParameters())
->setActiveTrail($menu_active_trail)
->onlyEnabledLinks();
$menu_tree = \Drupal::menuTree();
$tree = $menu_tree
->load($menu_name, $menu_tree_parameters);
$manipulators = [
[
'callable' => 'menu.default_tree_manipulators:checkAccess',
],
];
$tree = $menu_tree
->transform($tree, $manipulators);
foreach ($tree as $item) {
if ($backend === FALSE && !$item->access
->isAllowed()) {
continue;
}
$route_name = $item->link
->getPluginDefinition()['route_name'];
$result[] = [
'derivativeId' => $item->link
->getDerivativeId(),
'title' => $item->link
->getTitle(),
'level' => $level,
'description' => $item->link
->getDescription(),
'weight' => $item->link
->getWeight(),
'url' => $item->link
->getUrlObject()
->toString(),
'subtree' => self::getMenuTree($menu_name, $backend, $item, $level + 1),
'route_name' => $route_name,
'in_active_trail' => $item->inActiveTrail,
'plugin_id' => $item->link
->getPluginId(),
];
}
}
else {
if ($items->hasChildren) {
foreach ($items->subtree as $key_item => $item) {
if ($backend === FALSE && !$item->access
->isAllowed()) {
continue;
}
$route_name = $item->link
->getPluginDefinition()['route_name'];
$result[] = [
'derivativeId' => $item->link
->getDerivativeId(),
'title' => $item->link
->getTitle(),
'level' => $level,
'description' => $item->link
->getDescription(),
'weight' => $item->link
->getWeight(),
'url' => $item->link
->getUrlObject()
->toString(),
'subtree' => self::getMenuTree($menu_name, $backend, $item, $level + 1),
'route_name' => $route_name,
'in_active_trail' => $item->inActiveTrail,
'plugin_id' => $item->link
->getPluginId(),
];
}
}
}
return $result;
}