From 74b238c3d5dfee54f10e5502ab15762c6fdea295 Mon Sep 17 00:00:00 2001 From: Jeroen De Meerleer Date: Fri, 29 Apr 2022 13:51:06 +0200 Subject: [PATCH] BUGFIX: fixed error pages --- config/services.yaml | 3 ++ src/Controller/DefaultController.php | 2 -- src/EventListener/ExceptionListener.php | 37 +++++++++++++++++++++++++ 3 files changed, 40 insertions(+), 2 deletions(-) create mode 100644 src/EventListener/ExceptionListener.php diff --git a/config/services.yaml b/config/services.yaml index 2d6a76f..2a5167d 100644 --- a/config/services.yaml +++ b/config/services.yaml @@ -19,6 +19,9 @@ services: - '../src/DependencyInjection/' - '../src/Entity/' - '../src/Kernel.php' + App\EventListener\ExceptionListener: + tags: + - { name: kernel.event_listener, event: kernel.exception } # add more service definitions when explicit configuration is needed # please note that last definitions always *replace* previous ones diff --git a/src/Controller/DefaultController.php b/src/Controller/DefaultController.php index 70ec6ed..3f85379 100644 --- a/src/Controller/DefaultController.php +++ b/src/Controller/DefaultController.php @@ -4,8 +4,6 @@ namespace App\Controller; use App\Repository\Page; use Symfony\Bundle\FrameworkBundle\Controller\AbstractController; -use Symfony\Component\HttpFoundation\JsonResponse; -use Symfony\Component\HttpFoundation\RedirectResponse; use Symfony\Component\HttpFoundation\Request; use Symfony\Component\HttpFoundation\Response; use Symfony\Component\HttpKernel\KernelInterface; diff --git a/src/EventListener/ExceptionListener.php b/src/EventListener/ExceptionListener.php new file mode 100644 index 0000000..6c63b46 --- /dev/null +++ b/src/EventListener/ExceptionListener.php @@ -0,0 +1,37 @@ +router = $router; + } + + public function onKernelException(ExceptionEvent $event) + { + // You get the exception object from the received event + $exception = $event->getThrowable(); + + // HttpExceptionInterface is a special type of exception that + // holds status code and header details + if ($exception instanceof HttpExceptionInterface) { + $route = $this->router->generate('error', ['status' => $exception->getStatusCode()]); + } else { + $route = $this->router->generate('error', ['status' => Response::HTTP_INTERNAL_SERVER_ERROR]); + } + + // Customize your response object to display the exception details + $response = new RedirectResponse($route); + + // sends the modified response object to the event + $event->setResponse($response); + } +} \ No newline at end of file