namespace Symfony\Component\HttpKernel\Fragment;
+use Symfony\Component\EventDispatcher\EventDispatcherInterface;
use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\HttpFoundation\Response;
-use Symfony\Component\HttpKernel\HttpKernelInterface;
use Symfony\Component\HttpKernel\Controller\ControllerReference;
-use Symfony\Component\HttpKernel\KernelEvents;
use Symfony\Component\HttpKernel\Event\GetResponseForExceptionEvent;
-use Symfony\Component\EventDispatcher\EventDispatcherInterface;
+use Symfony\Component\HttpKernel\HttpCache\SubRequestHandler;
+use Symfony\Component\HttpKernel\HttpKernelInterface;
+use Symfony\Component\HttpKernel\KernelEvents;
/**
* Implements the inline rendering strategy where the Request is rendered by the current HTTP kernel.
private $kernel;
private $dispatcher;
- /**
- * Constructor.
- *
- * @param HttpKernelInterface $kernel A HttpKernelInterface instance
- * @param EventDispatcherInterface $dispatcher A EventDispatcherInterface instance
- */
public function __construct(HttpKernelInterface $kernel, EventDispatcherInterface $dispatcher = null)
{
$this->kernel = $kernel;
$level = ob_get_level();
try {
- return $this->kernel->handle($subRequest, HttpKernelInterface::SUB_REQUEST, false);
+ return SubRequestHandler::handle($this->kernel, $subRequest, HttpKernelInterface::SUB_REQUEST, false);
} catch (\Exception $e) {
// we dispatch the exception event to trigger the logging
// the response that comes back is simply ignored
$cookies = $request->cookies->all();
$server = $request->server->all();
- // Override the arguments to emulate a sub-request.
- // Sub-request object will point to localhost as client ip and real client ip
- // will be included into trusted header for client ip
- try {
- if ($trustedHeaderName = Request::getTrustedHeaderName(Request::HEADER_CLIENT_IP)) {
- $currentXForwardedFor = $request->headers->get($trustedHeaderName, '');
-
- $server['HTTP_'.$trustedHeaderName] = ($currentXForwardedFor ? $currentXForwardedFor.', ' : '').$request->getClientIp();
- }
- } catch (\InvalidArgumentException $e) {
- // Do nothing
- }
-
- $server['REMOTE_ADDR'] = '127.0.0.1';
unset($server['HTTP_IF_MODIFIED_SINCE']);
unset($server['HTTP_IF_NONE_MATCH']);
$subRequest->setSession($session);
}
+ if ($request->get('_format')) {
+ $subRequest->attributes->set('_format', $request->get('_format'));
+ }
+ if ($request->getDefaultLocale() !== $request->getLocale()) {
+ $subRequest->setLocale($request->getLocale());
+ }
+
return $subRequest;
}