PlaceholderGeneratorInterface.php
Same filename in other branches
Namespace
Drupal\Core\RenderFile
-
core/
lib/ Drupal/ Core/ Render/ PlaceholderGeneratorInterface.php
View source
<?php
namespace Drupal\Core\Render;
/**
* Defines an interface for turning a render array into a placeholder.
*
* This encapsulates logic related to generating placeholders.
*
* Makes it possible to determine whether a render array can be placeholdered
* (it can be reconstructed independently of the request context), whether a
* render array should be placeholdered (its cacheability meets the conditions),
* and to create a placeholder.
*
* @see \Drupal\Core\Render\RendererInterface
*/
interface PlaceholderGeneratorInterface {
/**
* Analyzes whether the given render array can be placeholdered.
*
* @param array $element
* A render array. Its #lazy_builder and #create_placeholder properties are
* analyzed.
*
* @return bool
*/
public function canCreatePlaceholder(array $element);
/**
* Whether the given render array should be automatically placeholdered.
*
* The render array should be placeholdered if its cacheability either has a
* cache context with too high cardinality, a cache tag with a too high
* invalidation rate, or a max-age that is too low. Either of these would make
* caching ineffective, and thus we choose to placeholder instead.
*
* @param array $element
* The render array whose cacheability to analyze.
*
* @return bool
* Whether the given render array's cacheability meets the placeholdering
* conditions.
*/
public function shouldAutomaticallyPlaceholder(array $element);
/**
* Turns the given element into a placeholder.
*
* Placeholdering allows us to avoid "poor cacheability contamination": this
* maps the current render array to one that only has #markup and #attached,
* and #attached contains a placeholder with this element's prior cacheability
* metadata. In other words: this placeholder is perfectly cacheable, the
* placeholder replacement logic effectively cordons off poor cacheability.
*
* @param array $element
* The render array to create a placeholder for.
*
* @return array
* Render array with placeholder markup and the attached placeholder
* replacement metadata.
*/
public function createPlaceholder(array $element);
/**
* Generates a placeholder HTML tag.
*
* @param string $tag
* The placeholder tag.
* @param array $attributes
* An array of key-value pairs to use as tag attributes.
*
* @return string
* The HTML placeholder.
*/
public static function createPlaceholderTag(string $tag, array $attributes) : string;
}
Interfaces
Title | Deprecated | Summary |
---|---|---|
PlaceholderGeneratorInterface | Defines an interface for turning a render array into a placeholder. |
Buggy or inaccurate documentation? Please file an issue. Need support? Need help programming? Connect with the Drupal community.