123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263 |
- <?php
- /*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
- namespace Symfony\Component\HttpKernel\Controller;
- use Symfony\Component\ErrorHandler\ErrorRenderer\ErrorRendererInterface;
- use Symfony\Component\HttpFoundation\Request;
- use Symfony\Component\HttpFoundation\Response;
- use Symfony\Component\HttpKernel\Exception\HttpException;
- use Symfony\Component\HttpKernel\HttpKernelInterface;
- /**
- * Renders error or exception pages from a given FlattenException.
- *
- * @author Yonel Ceruto <yonelceruto@gmail.com>
- * @author Matthias Pigulla <mp@webfactory.de>
- */
- class ErrorController
- {
- private $kernel;
- private $controller;
- private $errorRenderer;
- public function __construct(HttpKernelInterface $kernel, $controller, ErrorRendererInterface $errorRenderer)
- {
- $this->kernel = $kernel;
- $this->controller = $controller;
- $this->errorRenderer = $errorRenderer;
- }
- public function __invoke(\Throwable $exception): Response
- {
- $exception = $this->errorRenderer->render($exception);
- return new Response($exception->getAsString(), $exception->getStatusCode(), $exception->getHeaders());
- }
- public function preview(Request $request, int $code): Response
- {
- /*
- * This Request mimics the parameters set by
- * \Symfony\Component\HttpKernel\EventListener\ErrorListener::duplicateRequest, with
- * the additional "showException" flag.
- */
- $subRequest = $request->duplicate(null, null, [
- '_controller' => $this->controller,
- 'exception' => new HttpException($code, 'This is a sample exception.'),
- 'logger' => null,
- 'showException' => false,
- ]);
- return $this->kernel->handle($subRequest, HttpKernelInterface::SUB_REQUEST);
- }
- }
|