You are here

public function ToolbarMenuLinkTree::build in Drupal 10

Same name and namespace in other branches
  1. 8 core/modules/toolbar/src/Menu/ToolbarMenuLinkTree.php \Drupal\toolbar\Menu\ToolbarMenuLinkTree::build()
  2. 9 core/modules/toolbar/src/Menu/ToolbarMenuLinkTree.php \Drupal\toolbar\Menu\ToolbarMenuLinkTree::build()

Builds a renderable array from a menu tree.

The menu item's LI element is given one of the following classes:

  • expanded: The menu item is showing its submenu.
  • collapsed: The menu item has a submenu that is not shown.
  • leaf: The menu item has no submenu.

Parameters

\Drupal\Core\Menu\MenuLinkTreeElement[] $tree: A data structure representing the tree, as returned from MenuLinkTreeInterface::load().

Return value

array A renderable array.

Overrides MenuLinkTree::build

File

core/modules/toolbar/src/Menu/ToolbarMenuLinkTree.php, line 15

Class

ToolbarMenuLinkTree
Extends MenuLinkTree to add specific theme suggestions for the toolbar.

Namespace

Drupal\toolbar\Menu

Code

public function build(array $tree, $level = 0) {
  if ($level == 0) {
    if (!$tree) {
      return [];
    }
    $build = parent::build($tree, $level);

    /** @var \Drupal\Core\Menu\MenuLinkInterface $link */
    $first_link = reset($tree)->link;

    // Get the menu name of the first link.
    $menu_name = $first_link
      ->getMenuName();

    // Add a more specific theme suggestion to differentiate this rendered
    // menu from others.
    $build['#menu_name'] = $menu_name;
    $build['#theme'] = 'menu__toolbar__' . strtr($menu_name, '-', '_');
    return $build;
  }
  else {
    return parent::build($tree, $level);
  }
}