You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
62 lines
1.9 KiB
62 lines
1.9 KiB
<?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); |
|
} |
|
}
|
|
|