Skip to main content
Drupal API
User account menu
  • Log in

Breadcrumb

  1. Drupal Core 11.1.x
  2. HtmlResponsePlaceholderStrategySubscriber.php

class HtmlResponsePlaceholderStrategySubscriber

HTML response subscriber to allow for different placeholder strategies.

This allows core and contrib to coordinate how to render placeholders; e.g. an EsiRenderStrategy could replace the placeholders with ESI tags, while e.g. a BigPipeRenderStrategy could store the placeholders in a BigPipe service and render them after the main content has been sent to the client.

Hierarchy

  • class \Drupal\Core\EventSubscriber\HtmlResponsePlaceholderStrategySubscriber implements \Symfony\Component\EventDispatcher\EventSubscriberInterface

Expanded class hierarchy of HtmlResponsePlaceholderStrategySubscriber

File

core/lib/Drupal/Core/EventSubscriber/HtmlResponsePlaceholderStrategySubscriber.php, line 20

Namespace

Drupal\Core\EventSubscriber
View source
class HtmlResponsePlaceholderStrategySubscriber implements EventSubscriberInterface {
    
    /**
     * The placeholder strategy to use.
     *
     * @var \Drupal\Core\Render\Placeholder\PlaceholderStrategyInterface
     */
    protected $placeholderStrategy;
    
    /**
     * Constructs a HtmlResponsePlaceholderStrategySubscriber object.
     *
     * @param \Drupal\Core\Render\Placeholder\PlaceholderStrategyInterface $placeholder_strategy
     *   The placeholder strategy to use.
     */
    public function __construct(PlaceholderStrategyInterface $placeholder_strategy) {
        $this->placeholderStrategy = $placeholder_strategy;
    }
    
    /**
     * Processes placeholders for HTML responses.
     *
     * @param \Symfony\Component\HttpKernel\Event\ResponseEvent $event
     *   The event to process.
     */
    public function onRespond(ResponseEvent $event) {
        $response = $event->getResponse();
        if (!$response instanceof HtmlResponse) {
            return;
        }
        $attachments = $response->getAttachments();
        if (empty($attachments['placeholders'])) {
            return;
        }
        $attachments['placeholders'] = $this->placeholderStrategy
            ->processPlaceholders($attachments['placeholders']);
        $response->setAttachments($attachments);
    }
    
    /**
     * {@inheritdoc}
     */
    public static function getSubscribedEvents() : array {
        // Run shortly before HtmlResponseSubscriber.
        $events[KernelEvents::RESPONSE][] = [
            'onRespond',
            5,
        ];
        return $events;
    }

}

Members

Title Sort descending Modifiers Object type Summary Overriden Title
HtmlResponsePlaceholderStrategySubscriber::$placeholderStrategy protected property The placeholder strategy to use.
HtmlResponsePlaceholderStrategySubscriber::getSubscribedEvents public static function Returns an array of event names this subscriber wants to listen to. Overrides EventSubscriberInterface::getSubscribedEvents
HtmlResponsePlaceholderStrategySubscriber::onRespond public function Processes placeholders for HTML responses.
HtmlResponsePlaceholderStrategySubscriber::__construct public function Constructs a HtmlResponsePlaceholderStrategySubscriber object.

API Navigation

  • Drupal Core 11.1.x
  • Topics
  • Classes
  • Functions
  • Constants
  • Globals
  • Files
  • Namespaces
  • Deprecated
  • Services
RSS feed
Powered by Drupal