class EsiFragmentRenderer

Implements the ESI rendering strategy.

@author Fabien Potencier <fabien@symfony.com>

Hierarchy

Expanded class hierarchy of EsiFragmentRenderer

1 file declares its use of EsiFragmentRenderer
EsiFragmentRendererTest.php in drupal/core/vendor/symfony/http-kernel/Symfony/Component/HttpKernel/Tests/Fragment/EsiFragmentRendererTest.php

File

drupal/core/vendor/symfony/http-kernel/Symfony/Component/HttpKernel/Fragment/EsiFragmentRenderer.php, line 24

Namespace

Symfony\Component\HttpKernel\Fragment
View source
class EsiFragmentRenderer extends RoutableFragmentRenderer {
  private $esi;
  private $inlineStrategy;

  /**
   * Constructor.
   *
   * The "fallback" strategy when ESI is not available should always be an
   * instance of InlineFragmentRenderer.
   *
   * @param Esi                    $esi            An Esi instance
   * @param InlineFragmentRenderer $inlineStrategy The inline strategy to use when ESI is not supported
   */
  public function __construct(Esi $esi, InlineFragmentRenderer $inlineStrategy) {
    $this->esi = $esi;
    $this->inlineStrategy = $inlineStrategy;
  }

  /**
   * {@inheritdoc}
   *
   * Note that if the current Request has no ESI capability, this method
   * falls back to use the inline rendering strategy.
   *
   * Additional available options:
   *
   *  * alt: an alternative URI to render in case of an error
   *  * comment: a comment to add when returning an esi:include tag
   *
   * @see Symfony\Component\HttpKernel\HttpCache\ESI
   */
  public function render($uri, Request $request, array $options = array()) {
    if (!$this->esi
      ->hasSurrogateEsiCapability($request)) {
      return $this->inlineStrategy
        ->render($uri, $request, $options);
    }
    if ($uri instanceof ControllerReference) {
      $uri = $this
        ->generateFragmentUri($uri, $request);
    }
    $alt = isset($options['alt']) ? $options['alt'] : null;
    if ($alt instanceof ControllerReference) {
      $alt = $this
        ->generateFragmentUri($alt, $request);
    }
    $tag = $this->esi
      ->renderIncludeTag($uri, $alt, isset($options['ignore_errors']) ? $options['ignore_errors'] : false, isset($options['comment']) ? $options['comment'] : '');
    return new Response($tag);
  }

  /**
   * {@inheritdoc}
   */
  public function getName() {
    return 'esi';
  }

}

Members

Namesort descending Modifiers Type Description Overrides
EsiFragmentRenderer::$esi private property
EsiFragmentRenderer::$inlineStrategy private property
EsiFragmentRenderer::getName public function Gets the name of the strategy. Overrides FragmentRendererInterface::getName
EsiFragmentRenderer::render public function Note that if the current Request has no ESI capability, this method falls back to use the inline rendering strategy. Overrides FragmentRendererInterface::render
EsiFragmentRenderer::__construct public function Constructor.
RoutableFragmentRenderer::$fragmentPath private property
RoutableFragmentRenderer::generateFragmentUri protected function Generates a fragment URI for a given controller.
RoutableFragmentRenderer::setFragmentPath public function Sets the fragment path that triggers the fragment listener.