function Toolbar::preRenderToolbar

Same name in other branches
  1. 8.9.x core/modules/toolbar/src/Element/Toolbar.php \Drupal\toolbar\Element\Toolbar::preRenderToolbar()
  2. 10 core/modules/toolbar/src/Element/Toolbar.php \Drupal\toolbar\Element\Toolbar::preRenderToolbar()
  3. 11.x 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

toolbar_page_top()

File

core/modules/toolbar/src/Element/Toolbar.php, line 66

Class

Toolbar
Provides a render element for the default Drupal toolbar.

Namespace

Drupal\toolbar\Element

Code

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.