Handles an ESI from the cache.
HttpCache $cache An HttpCache instance:
string $uri The main URI:
string $alt An alternative URI:
Boolean $ignoreErrors Whether to ignore errors or not:
string
\RuntimeException
\Exception
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;
}
}
}