src/ApiBundle/Exceptions/JsonExceptionListener.php line 20

Open in your IDE?
  1. <?php
  2. namespace ApiBundle\Exceptions;
  3. use Symfony\Component\HttpFoundation\JsonResponse;
  4. use Symfony\Component\HttpKernel\Event\GetResponseForExceptionEvent;
  5. /**
  6.  * Class JsonExceptionListener
  7.  * @package ApiBundle\Exceptions
  8.  */
  9. class JsonExceptionListener
  10. {
  11.     const API_ROUTE '/api';
  12.     /**
  13.      * @param GetResponseForExceptionEvent $event
  14.      * @return null
  15.      */
  16.     public function onKernelException(GetResponseForExceptionEvent $event)
  17.     {
  18.         $path $event->getRequest()->getPathInfo();
  19.         $isApiRoute $this->isApiRoute($path);
  20.         if (!$isApiRoute) {
  21.             return null;
  22.         }
  23.         $exception $event->getException();
  24.         $data = [
  25.             'message' => $exception->getMessage(),
  26.         ];
  27.         $response = new JsonResponse($data);
  28.         $event->setResponse($response);
  29.     }
  30.     /**
  31.      * @param $path
  32.      * @return bool
  33.      */
  34.     private function isApiRoute($path)
  35.     {
  36.         if (strpos($pathself::API_ROUTE) === 0) {
  37.             return true;
  38.         }
  39.         return false;
  40.     }
  41. }