You are here

protected function MenuTreeResource::addCacheDependencies in REST Menu Tree 8

Same name and namespace in other branches
  1. 2.x src/Plugin/rest/resource/MenuTreeResource.php \Drupal\rest_menu_tree\Plugin\rest\resource\MenuTreeResource::addCacheDependencies()

Add Cache Tags.

1 call to MenuTreeResource::addCacheDependencies()
MenuTreeResource::get in src/Plugin/rest/resource/MenuTreeResource.php

File

src/Plugin/rest/resource/MenuTreeResource.php, line 183

Class

MenuTreeResource
Provides a resource to get view modes by entity and bundle.

Namespace

Drupal\rest_menu_tree\Plugin\rest\resource

Code

protected function addCacheDependencies(array $data, CacheableResponseInterface $response) {
  foreach ($data as $value) {

    // Gather the access cacheability of every item in the menu link tree,
    // including inaccessible items. This allows us to render cache the menu
    // tree, yet still automatically vary the rendered menu by the same cache
    // contexts that the access results vary by.
    // However, if $value->access is not an AccessResultInterface object, this
    // will still render the menu link, because this method does not want to
    // require access checking to be able to render a menu tree.
    if ($value->access instanceof AccessResultInterface) {
      $response
        ->addCacheableDependency($value->access);
    }

    // Gather the cacheability of every item in the menu link tree. Some links
    // may be dynamic: they may have a dynamic text (e.g. a "Hi, <user>" link
    // text, which would vary by 'user' cache context), or a dynamic route
    // name or route parameters.
    $response
      ->addCacheableDependency($value->link);

    // There may be additional dependencies that must be manually determined.
    $this
      ->addLinkCacheDependencies($value->link, $response);
    if ($value->subtree) {
      $this
        ->addCacheDependencies($value->subtree, $response);
    }
  }
}