vendor/rawafed/commons-bundle/Service/ExceptionListener.php line 24

Open in your IDE?
  1. <?php
  2. namespace Rawafed\CommonsBundle\Service;
  3. use Monolog\Logger;
  4. use Symfony\Component\HttpFoundation\JsonResponse;
  5. use Symfony\Component\HttpKernel\Event\ExceptionEvent;
  6. use Symfony\Contracts\Translation\TranslatorInterface;
  7. use Rawafed\CommonsBundle\Exception\ApplicationException;
  8. class ExceptionListener
  9. {
  10.     private $kernelEnvironment;
  11.     private $logger;
  12.     private $translator;
  13.     public function __construct(string $kernelEnvironmentLogger $loggerTranslatorInterface $translator)
  14.     {
  15.         $this->kernelEnvironment $kernelEnvironment;
  16.         $this->logger $logger;
  17.         $this->translator $translator;
  18.     }
  19.     public function onKernelException(ExceptionEvent $event)
  20.     {
  21.         // handle ajax exception to return json response
  22.         if ($event->getRequest()->isXmlHttpRequest() && ($this->kernelEnvironment != 'dev')) {
  23.             $exception $event->getThrowable();
  24.             $message null;
  25.             if ($exception instanceof ApplicationException) {
  26.                 $message $exception->getMessage();
  27.             } else {
  28.                 $message 'Internal Server Error';
  29.                 $this->logger->addError($exception);
  30.             }
  31.             $event->setResponse(
  32.                 new JsonResponse(array('error' => true'message' => $this->translator->trans($message)), 500)
  33.             );
  34.         }
  35.     }
  36. }