public function Esi::handle

Handles an ESI from the cache.

Parameters

HttpCache $cache An HttpCache instance:

string $uri The main URI:

string $alt An alternative URI:

Boolean $ignoreErrors Whether to ignore errors or not:

File

drupal/core/vendor/symfony/http-kernel/Symfony/Component/HttpKernel/HttpCache/Esi.php, line 186

Class

Esi
Esi implements the ESI capabilities to Request and Response instances.

Namespace

Symfony\Component\HttpKernel\HttpCache

Code

public function handle(HttpCache $cache, $uri, $alt, $ignoreErrors) {
  $subRequest = Request::create($uri, 'get', array(), $cache
    ->getRequest()->cookies
    ->all(), array(), $cache
    ->getRequest()->server
    ->all());
  try {
    $response = $cache
      ->handle($subRequest, HttpKernelInterface::SUB_REQUEST, true);
    if (!$response
      ->isSuccessful()) {
      throw new \RuntimeException(sprintf('Error when rendering "%s" (Status code is %s).', $subRequest
        ->getUri(), $response
        ->getStatusCode()));
    }
    return $response
      ->getContent();
  } catch (\Exception $e) {
    if ($alt) {
      return $this
        ->handle($cache, $alt, '', $ignoreErrors);
    }
    if (!$ignoreErrors) {
      throw $e;
    }
  }
}