function Toolbar::preRenderToolbar
Same name in other branches
- 9 core/modules/toolbar/src/Element/Toolbar.php \Drupal\toolbar\Element\Toolbar::preRenderToolbar()
- 8.9.x core/modules/toolbar/src/Element/Toolbar.php \Drupal\toolbar\Element\Toolbar::preRenderToolbar()
- 10 core/modules/toolbar/src/Element/Toolbar.php \Drupal\toolbar\Element\Toolbar::preRenderToolbar()
Builds the Toolbar as a structured array ready for rendering.
Since building the toolbar takes some time, it is done just prior to rendering to ensure that it is built only if it will be displayed.
Parameters
array $element: A renderable array.
Return value
array A renderable array.
See also
File
-
core/
modules/ toolbar/ src/ Element/ Toolbar.php, line 63
Class
- Toolbar
- Provides a render element for the default Drupal toolbar.
Namespace
Drupal\toolbar\ElementCode
public static function preRenderToolbar($element) {
// Get the configured breakpoints to switch from vertical to horizontal
// toolbar presentation.
$breakpoints = static::breakpointManager()->getBreakpointsByGroup('toolbar');
if (!empty($breakpoints)) {
$media_queries = [];
foreach ($breakpoints as $id => $breakpoint) {
$media_queries[$id] = $breakpoint->getMediaQuery();
}
$element['#attached']['drupalSettings']['toolbar']['breakpoints'] = $media_queries;
}
$module_handler = static::moduleHandler();
// Get toolbar items from all modules that implement hook_toolbar().
$items = $module_handler->invokeAll('toolbar');
// Allow for altering of hook_toolbar().
$module_handler->alter('toolbar', $items);
// Sort the children.
uasort($items, [
'\\Drupal\\Component\\Utility\\SortArray',
'sortByWeightProperty',
]);
// Merge in the original toolbar values.
$element = array_merge($element, $items);
// Assign each item a unique ID, based on its key.
foreach (Element::children($element) as $key) {
$element[$key]['#id'] = Html::getId('toolbar-item-' . $key);
}
return $element;
}
Buggy or inaccurate documentation? Please file an issue. Need support? Need help programming? Connect with the Drupal community.