public function PlaceholderingRenderCache::set

public PlaceholderingRenderCache::set(array &$elements, array $pre_bubbling_elements)

Caches the rendered output of a renderable array.

May be called by an implementation of \Drupal\Core\Render\RendererInterface while rendering, if the #cache property is set.

Parameters

array $elements: A renderable array.

array $pre_bubbling_elements: A renderable array corresponding to the state (in particular, the cacheability metadata) of $elements prior to the beginning of its rendering process, and therefore before any bubbling of child information has taken place. Only the #cache property is used by this function, so the caller may omit all other properties and children from this array.

Return value

bool|null Returns FALSE if no cache item could be created, NULL otherwise.

Overrides RenderCache::set

See also

::get()

File

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

Class

PlaceholderingRenderCache
Adds automatic placeholdering to the RenderCache.

Namespace

Drupal\Core\Render

Code

public function set(array &$elements, array $pre_bubbling_elements) {
  $result = parent::set($elements, $pre_bubbling_elements);

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

  if ($this->placeholderGenerator->canCreatePlaceholder($pre_bubbling_elements) && $this->placeholderGenerator->shouldAutomaticallyPlaceholder($elements)) {
    // Overwrite $elements with a placeholder. The Renderer (which called this
    // method) will update the context with the bubbleable metadata of the
    // overwritten $elements.
    $elements = $this->createPlaceholderAndRemember($this->getCacheableRenderArray($elements), $pre_bubbling_elements);
  }

  return $result;
}

© 2001–2016 by the original authors
Licensed under the GNU General Public License, version 2 and later.
Drupal is a registered trademark of Dries Buytaert.
https://api.drupal.org/api/drupal/core!lib!Drupal!Core!Render!PlaceholderingRenderCache.php/function/PlaceholderingRenderCache::set/8.1.x