public MenuLinkTree::build(array $tree)
Builds a renderable array from a menu tree.
The menu item's LI element is given one of the following classes:
\Drupal\Core\Menu\MenuLinkTreeElement[] $tree: A data structure representing the tree, as returned from MenuLinkTreeInterface::load().
array A renderable array.
Overrides MenuLinkTreeInterface::build
public function build(array $tree) { $tree_access_cacheability = new CacheableMetadata(); $tree_link_cacheability = new CacheableMetadata(); $items = $this->buildItems($tree, $tree_access_cacheability, $tree_link_cacheability); $build = []; // Apply the tree-wide gathered access cacheability metadata and link // cacheability metadata to the render array. This ensures that the // rendered menu is varied by the cache contexts that the access results // and (dynamic) links depended upon, and invalidated by the cache tags // that may change the values of the access results and links. $tree_cacheability = $tree_access_cacheability->merge($tree_link_cacheability); $tree_cacheability->applyTo($build); if ($items) { // Make sure drupal_render() does not re-order the links. $build['#sorted'] = TRUE; // Get the menu name from the last link. $item = end($items); $link = $item['original_link']; $menu_name = $link->getMenuName(); // Add the theme wrapper for outer markup. // Allow menu-specific theme overrides. $build['#theme'] = 'menu__' . strtr($menu_name, '-', '_'); $build['#menu_name'] = $menu_name; $build['#items'] = $items; // Set cache tag. $build['#cache']['tags'][] = 'config:system.menu.' . $menu_name; } return $build; }
© 2001–2016 by the original authors
Licensed under the GNU General Public License, version 2 and later.
Drupal is a registered trademark of Dries Buytaert.
https://api.drupal.org/api/drupal/core!lib!Drupal!Core!Menu!MenuLinkTree.php/function/MenuLinkTree::build/8.1.x