function BigPipeStrategy::processPlaceholders

Same name and namespace in other branches
  1. 9 core/modules/big_pipe/src/Render/Placeholder/BigPipeStrategy.php \Drupal\big_pipe\Render\Placeholder\BigPipeStrategy::processPlaceholders()
  2. 8.9.x core/modules/big_pipe/src/Render/Placeholder/BigPipeStrategy.php \Drupal\big_pipe\Render\Placeholder\BigPipeStrategy::processPlaceholders()
  3. 11.x core/modules/big_pipe/src/Render/Placeholder/BigPipeStrategy.php \Drupal\big_pipe\Render\Placeholder\BigPipeStrategy::processPlaceholders()

Processes placeholders to render them with different strategies.

Parameters

array $placeholders: The placeholders to process, with the keys being the markup for the placeholders and the values the corresponding render array describing the data to be rendered.

Return value

array The resulting placeholders, with a subset of the keys of $placeholders (and those being the markup for the placeholders) but with the corresponding render array being potentially modified to render e.g. an ESI or BigPipe placeholder.

Overrides PlaceholderStrategyInterface::processPlaceholders

File

core/modules/big_pipe/src/Render/Placeholder/BigPipeStrategy.php, line 108

Class

BigPipeStrategy
Defines the BigPipe placeholder strategy, to send HTML in chunks.

Namespace

Drupal\big_pipe\Render\Placeholder

Code

public function processPlaceholders(array $placeholders) {
  $request = $this->requestStack
    ->getCurrentRequest();
  // Prevent placeholders from being processed by BigPipe on uncacheable
  // request methods. For example, a form rendered inside a placeholder will
  // be rendered as soon as possible before any headers are sent, so that it
  // can be detected, submitted, and redirected immediately.
  // @todo https://www.drupal.org/node/2367555
  if (!$request->isMethodCacheable()) {
    return [];
  }
  // Routes can opt out from using the BigPipe HTML delivery technique.
  if ($this->routeMatch
    ->getRouteObject()
    ->getOption('_no_big_pipe')) {
    return [];
  }
  if (!$this->sessionConfiguration
    ->hasSession($request)) {
    return [];
  }
  return $this->doProcessPlaceholders($placeholders);
}

Buggy or inaccurate documentation? Please file an issue. Need support? Need help programming? Connect with the Drupal community.