src/EventListener/ExceptionListener.php line 15

Open in your IDE?
  1. <?php
  2. namespace App\EventListener;
  3. use Symfony\Component\HttpFoundation\JsonResponse;
  4. use Symfony\Component\HttpFoundation\Response;
  5. use Symfony\Component\HttpKernel\Event\ExceptionEvent;
  6. use Symfony\Component\HttpKernel\Exception\HttpExceptionInterface;
  7. /**
  8.  * Este evento se envía tan pronto como ocurre un error durante el manejo de la solicitud HTTP.
  9.  */
  10. class ExceptionListener
  11. {
  12.     public function onKernelException(ExceptionEvent $event)
  13.     {
  14.         // Obtienes el objeto de excepción del evento recibido
  15.         $exception $event->getThrowable();
  16.         // Personalice su objeto de respuesta para mostrar los detalles de la excepción
  17.         $response = new JsonResponse(['status' => false'msg' => [$exception->getMessage()]]);
  18.         // HttpExceptionInterface es un tipo especial de excepción que contiene el código de estado y los detalles del encabezado
  19.         if ($exception instanceof HttpExceptionInterface) {
  20.             $response->setStatusCode($exception->getStatusCode());
  21.             $response->headers->replace($exception->getHeaders());
  22.         } else {
  23.             $response->setStatusCode(Response::HTTP_INTERNAL_SERVER_ERROR);
  24.         }
  25.         $response->headers->set('Content-Type''application/json');
  26.         // envía el objeto de respuesta modificado al evento
  27.         $event->setResponse($response);
  28.     }
  29. }