src/EventListener/ApiListener.php line 11

Open in your IDE?
  1. <?php
  2. namespace App\EventListener;
  3. use Symfony\Component\HttpFoundation\JsonResponse;
  4. use Symfony\Component\HttpKernel\Event\ExceptionEvent;
  5. use Symfony\Component\HttpKernel\Exception\HttpExceptionInterface;
  6. class ApiListener
  7. {
  8.     public function onKernelException(ExceptionEvent $event): void
  9.     {
  10.         if (!str_starts_with($event->getRequest()->getRequestUri(), '/api')) {
  11.             return;
  12.         }
  13.         $exception $event->getThrowable();
  14.         if ($exception instanceof HttpExceptionInterface) {
  15.             $response = new JsonResponse([
  16.                 'code' => $exception->getCode() ? $exception->getCode() : null,
  17.                 'message' => $exception->getMessage(),
  18.             ]);
  19.             $response->setStatusCode($exception->getStatusCode());
  20.             $response->headers->replace($exception->getHeaders());
  21.             $event->setResponse($response);
  22.         }
  23.     }
  24. }