_toolbar_do_get_rendered_subtrees(array $data)
#pre_render callback for toolbar_get_rendered_subtrees().
File
- core/modules/toolbar/toolbar.module, line 304
- Administration toolbar for quick access to top level administration items.
Code
function _toolbar_do_get_rendered_subtrees(array $data) { $menu_tree = \Drupal::service('toolbar.menu_tree'); // Load the administration menu. The first level is the "Administration" link. // In order to load the children of that link and the subsequent two levels, // start at the second level and end at the fourth. $parameters = new MenuTreeParameters(); $parameters->setMinDepth(2)->setMaxDepth(4)->onlyEnabledLinks(); // @todo Make the menu configurable in https://www.drupal.org/node/1869638. $tree = $menu_tree->load('admin', $parameters); $manipulators = array( array('callable' => 'menu.default_tree_manipulators:checkAccess'), array('callable' => 'menu.default_tree_manipulators:generateIndexAndSort'), array('callable' => 'toolbar_menu_navigation_links'), ); $tree = $menu_tree->transform($tree, $manipulators); $subtrees = array(); // Calculated the combined cacheability of all subtrees. $cacheability = new CacheableMetadata(); foreach ($tree as $element) { /** @var \Drupal\Core\Menu\MenuLinkInterface $link */ $link = $element->link; if ($element->subtree) { $subtree = $menu_tree->build($element->subtree); $output = \Drupal::service('renderer')->renderPlain($subtree); $cacheability = $cacheability->merge(CacheableMetadata::createFromRenderArray($subtree)); } else { $output = ''; } // Many routes have dots as route name, while some special ones like <front> // have <> characters in them. $url = $link->getUrlObject(); $id = str_replace(array('.', '<', '>'), array('-', '', ''), $url->isRouted() ? $url->getRouteName() : $url->getUri()); $subtrees[$id] = $output; } // Store the subtrees, along with the cacheability metadata. $cacheability->applyTo($data); $data['#subtrees'] = $subtrees; return $data; }
Please login to continue.