PlaceholderingRenderCache::get

public PlaceholderingRenderCache::get(array $elements)

Gets the cached, pre-rendered element of a renderable element from cache.

Parameters

array $elements: A renderable array.

Return value

array|false A renderable array, with the original element and all its children pre- rendered, or FALSE if no cached copy of the element is available.

Overrides RenderCache::get

See also

\Drupal\Core\Render\RendererInterface::render()

::set()

File

core/lib/Drupal/Core/Render/PlaceholderingRenderCache.php, line 94

Class

PlaceholderingRenderCache
Adds automatic placeholdering to the RenderCache.

Namespace

Drupal\Core\Render

Code

public function get(array $elements) {
  // @todo remove this check when https://www.drupal.org/node/2367555 lands.
  if (!$this->requestStack->getCurrentRequest()->isMethodSafe()) {
    return FALSE;
  }

  // When rendering placeholders, special case auto-placeholdered elements:
  // avoid retrieving them from cache again, or rendering them again.
  if (isset($elements['#create_placeholder']) && $elements['#create_placeholder'] === FALSE) {
    $cached_placeholder_result = $this->getFromPlaceholderResultsCache($elements);
    if ($cached_placeholder_result !== FALSE) {
      return $cached_placeholder_result;
    }
  }

  $cached_element = parent::get($elements);

  if ($cached_element === FALSE) {
    return FALSE;
  }
  else {
    if ($this->placeholderGenerator->canCreatePlaceholder($elements) && $this->placeholderGenerator->shouldAutomaticallyPlaceholder($cached_element)) {
      return $this->createPlaceholderAndRemember($cached_element, $elements);
    }

    return $cached_element;
  }
}
doc_Drupal
2016-10-29 09:34:12
Comments
Leave a Comment

Please login to continue.