src/EventSubscriber/ExceptionSubscriber.php line 13

Open in your IDE?
  1. <?php
  2. namespace App\EventSubscriber;
  3. use Symfony\Component\EventDispatcher\EventSubscriberInterface;
  4. use Symfony\Component\HttpKernel\Event\ExceptionEvent;
  5. use Symfony\Component\HttpKernel\KernelEvents;
  6. use \Symfony\Component\HttpKernel\Exception\HttpException;
  7. use \Symfony\Component\HttpFoundation\JsonResponse;
  8. class ExceptionSubscriber implements EventSubscriberInterface
  9. {
  10. public function onKernelException(ExceptionEvent $event): void
  11. {
  12. $exception = $event->getThrowable();
  13. if($exception instanceof HttpException) {
  14. $data = [
  15. 'status' => $exception->getStatusCode(),
  16. 'message' => $exception->getMessage()
  17. ];
  18. } else {
  19. $data = [
  20. 'status' => 500,
  21. 'message' => $exception->getMessage()
  22. ];
  23. }
  24. $event->setResponse(new JsonResponse($data));
  25. }
  26. public static function getSubscribedEvents(): array
  27. {
  28. return [
  29. KernelEvents::EXCEPTION => 'onKernelException',
  30. ];
  31. }
  32. }