src/EventListener/ExceptionListener.php line 25

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