getAdditionalCacheContextsForEntity example

$this->verifyPageCache($referencing_entity_url, 'MISS');

    // Verify a cache hit, but also the presence of the correct cache tags.     $expected_tags = Cache::mergeTags($referencing_entity_cache_tags$page_cache_tags);
    $expected_tags = Cache::mergeTags($expected_tags$page_cache_tags_referencing_entity);
    $this->verifyPageCache($referencing_entity_url, 'HIT', $expected_tags);

    // Also verify the existence of an entity render cache entry.     $cache_keys = ['entity_view', 'entity_test', $this->referencingEntity->id(), 'full'];
    $cid = $this->createCacheId($cache_keys$entity_cache_contexts);
    $access_cache_contexts = $this->getAccessCacheContextsForEntity($this->entity);
    $additional_cache_contexts = $this->getAdditionalCacheContextsForEntity($this->referencingEntity);
    $redirected_cid = NULL;
    if (count($access_cache_contexts) || count($additional_cache_contexts)) {
      $cache_contexts = Cache::mergeContexts($entity_cache_contexts$additional_cache_contexts);
      $cache_contexts = Cache::mergeContexts($cache_contexts$access_cache_contexts);
      $redirected_cid = $this->createCacheId($cache_keys$cache_contexts);
      $context_metadata = \Drupal::service('cache_contexts_manager')->convertTokensToKeys($cache_contexts);
      $referencing_entity_cache_tags = Cache::mergeTags($referencing_entity_cache_tags$context_metadata->getCacheTags());
    }
    $this->verifyRenderCache($cid$referencing_entity_cache_tags$redirected_cid);

    $this->verifyPageCache($non_referencing_entity_url, 'MISS');
    
$this->verifyPageCache($entity_url, 'MISS');

    // Verify a cache hit, but also the presence of the correct cache tags.     $this->verifyPageCache($entity_url, 'HIT');

    // Also verify the existence of an entity render cache entry, if this entity     // type supports render caching.     if (\Drupal::entityTypeManager()->getDefinition($entity_type)->isRenderCacheable()) {
      $cache_keys = ['entity_view', $entity_type$this->entity->id()$view_mode];
      $cid = $this->createCacheId($cache_keys$entity_cache_contexts);
      $redirected_cid = NULL;
      $additional_cache_contexts = $this->getAdditionalCacheContextsForEntity($this->entity);
      if (count($additional_cache_contexts)) {
        $redirected_cid = $this->createCacheId($cache_keys, Cache::mergeContexts($entity_cache_contexts$additional_cache_contexts));
      }
      $expected_cache_tags = Cache::mergeTags($cache_tag$view_cache_tag);
      $expected_cache_tags = Cache::mergeTags($expected_cache_tags$this->getAdditionalCacheTagsForEntity($this->entity));
      $expected_cache_tags = Cache::mergeTags($expected_cache_tags[$render_cache_tag]);
      $this->verifyRenderCache($cid$expected_cache_tags$redirected_cid);
    }

    // Verify that after modifying the entity, there is a cache miss.     $this->entity->save();
    
Home | Imprint | This part of the site doesn't use cookies.