function SystemMenuBlock::getCacheContexts

Same name and namespace in other branches
  1. 11.x core/modules/system/src/Plugin/Block/SystemMenuBlock.php \Drupal\system\Plugin\Block\SystemMenuBlock::getCacheContexts()
  2. 10 core/modules/system/src/Plugin/Block/SystemMenuBlock.php \Drupal\system\Plugin\Block\SystemMenuBlock::getCacheContexts()
  3. 9 core/modules/system/src/Plugin/Block/SystemMenuBlock.php \Drupal\system\Plugin\Block\SystemMenuBlock::getCacheContexts()
  4. 8.9.x core/modules/system/src/Plugin/Block/SystemMenuBlock.php \Drupal\system\Plugin\Block\SystemMenuBlock::getCacheContexts()

Overrides ContextAwarePluginTrait::getCacheContexts

1 call to SystemMenuBlock::getCacheContexts()
NavigationMenuBlock::getCacheContexts in core/modules/navigation/src/Plugin/Block/NavigationMenuBlock.php
1 method overrides SystemMenuBlock::getCacheContexts()
NavigationMenuBlock::getCacheContexts in core/modules/navigation/src/Plugin/Block/NavigationMenuBlock.php

File

core/modules/system/src/Plugin/Block/SystemMenuBlock.php, line 271

Class

SystemMenuBlock
Provides a generic Menu block.

Namespace

Drupal\system\Plugin\Block

Code

public function getCacheContexts() {
  // ::build() uses MenuLinkTreeInterface::getCurrentRouteMenuTreeParameters()
  // to generate menu tree parameters, and those take the active menu trail
  // into account. Therefore, we must vary the rendered menu by the active
  // trail of the rendered menu.
  // Additional cache contexts, e.g. those that determine link text or
  // accessibility of a menu, will be bubbled automatically.
  $menu_name = $this->getDerivativeId();
  $contexts = parent::getCacheContexts();
  // The active trail context is added when the menu block is not configured
  // to ignore the active trail. Ignoring the active trail only applies when
  // the menu is also configured with all items expanded and start level 1, so
  // if any of those conditions are not true, the active trail context is
  // added.
  if ($this->shouldSetActiveTrail()) {
    $contexts = Cache::mergeContexts($contexts, [
      'route.menu_active_trails:' . $menu_name,
    ]);
  }
  return $contexts;
}

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