function template_preprocess_toolbar

Same name and namespace in other branches
  1. 8.9.x core/modules/toolbar/toolbar.module \template_preprocess_toolbar()
  2. 10 core/modules/toolbar/toolbar.module \template_preprocess_toolbar()
  3. 11.x core/modules/toolbar/toolbar.module \template_preprocess_toolbar()

Prepares variables for administration toolbar templates.

Default template: toolbar.html.twig.

Parameters

array $variables: An associative array containing:

  • element: An associative array containing the properties and children of the tray. Properties used: #children, #attributes and #bar.

File

core/modules/toolbar/toolbar.module, line 77

Code

function template_preprocess_toolbar(&$variables) {
    $element = $variables['element'];
    // Prepare the toolbar attributes.
    $variables['attributes'] = $element['#attributes'];
    $variables['toolbar_attributes'] = new Attribute($element['#bar']['#attributes']);
    $variables['toolbar_heading'] = $element['#bar']['#heading'];
    // Prepare the trays and tabs for each toolbar item as well as the remainder
    // variable that will hold any non-tray, non-tab elements.
    $variables['trays'] = [];
    $variables['tabs'] = [];
    $variables['remainder'] = [];
    foreach (Element::children($element) as $key) {
        // Early rendering to collect the wrapper attributes from
        // ToolbarItem elements.
        if (!empty($element[$key])) {
            Drupal::service('renderer')->render($element[$key]);
        }
        // Add the tray.
        if (isset($element[$key]['tray'])) {
            $attributes = [];
            if (!empty($element[$key]['tray']['#wrapper_attributes'])) {
                $attributes = $element[$key]['tray']['#wrapper_attributes'];
            }
            $variables['trays'][$key] = [
                'links' => $element[$key]['tray'],
                'attributes' => new Attribute($attributes),
            ];
            if (array_key_exists('#heading', $element[$key]['tray'])) {
                $variables['trays'][$key]['label'] = $element[$key]['tray']['#heading'];
            }
        }
        // Add the tab.
        if (isset($element[$key]['tab'])) {
            $attributes = [];
            // Pass the wrapper attributes along.
            if (!empty($element[$key]['#wrapper_attributes'])) {
                $attributes = $element[$key]['#wrapper_attributes'];
            }
            $variables['tabs'][$key] = [
                'link' => $element[$key]['tab'],
                'attributes' => new Attribute($attributes),
            ];
        }
        // Add other non-tray, non-tab child elements to the remainder variable for
        // later rendering.
        foreach (Element::children($element[$key]) as $child_key) {
            if (!in_array($child_key, [
                'tray',
                'tab',
            ])) {
                $variables['remainder'][$key][$child_key] = $element[$key][$child_key];
            }
        }
    }
}

Buggy or inaccurate documentation? Please file an issue. Need support? Need help programming? Connect with the Drupal community.