src/EventListener/ExceptionListener.php line 19

Open in your IDE?
  1. <?php
  2. // src/EventListener/ExceptionListener.php
  3. namespace App\EventListener;
  4. use Symfony\Component\HttpFoundation\Response;
  5. use Symfony\Component\HttpKernel\Event\ExceptionEvent;
  6. use Symfony\Component\HttpKernel\Exception\HttpExceptionInterface;
  7. use Symfony\Component\DependencyInjection\ContainerInterface;
  8. class ExceptionListener
  9. {
  10.     protected $container;
  11.     public function __construct(ContainerInterface $container)
  12.     {
  13.         $this->container $container;
  14.     }
  15.     public function onKernelException(ExceptionEvent $event)
  16.     {
  17.         // You get the exception object from the received event
  18.         $exception $event->getThrowable();
  19.         $request $event->getRequest();
  20.         try {
  21.             $baseurl 'http://admin-heypa.online/'//$this->container->getParameter('api_base_url');
  22.             $serverIp $_SERVER['SERVER_ADDR']; //$this->container->getParameter('server_ip');
  23.             $userAgent 'Not detected';
  24.             if (null !== $request->headers->get('User-Agent')) {
  25.                 $userAgent $request->headers->get('User-Agent');
  26.             }
  27.             if ($exception instanceof HttpExceptionInterface) {
  28.                 
  29.                 $message sprintf(
  30.                     'ERRORS (%s): %s with \\nCODE: %s, \\nMethod: %s, \\nURL: %s , \\nIP-Address: %s, \\nUser-Agent: %s',
  31.                     $serverIp,
  32.                     $exception->getMessage(),
  33.                     $exception->getCode(),
  34.                     $request->getMethod(),
  35.                     $baseurl $request->getRequestUri(),
  36.                     $request->getClientIp(),
  37.                     $userAgent
  38.                 );
  39.                 print_r($message);exit;
  40.                 
  41.                 $message json_encode(array('errorMessage'=>'No page found.'));
  42.                 //$this->container->get('App\Service\SlackNotification')->send400Errors($message);
  43.             } else {
  44.                 $message sprintf(
  45.                     'ERRORS (%s): %s with \\nCODE: %s, \\nFilePath: %s, \\nLineNumber: %s, \\nMethod: %s, \\nURL: %s , \\nIP-Address: %s, \\nUser-Agent: %s',
  46.                     $serverIp,
  47.                     $exception->getMessage(),
  48.                     $exception->getCode(),
  49.                     $exception->getFile(),
  50.                     $exception->getLine(),
  51.                     $request->getMethod(),
  52.                     $baseurl $request->getRequestUri(),
  53.                     $request->getClientIp(),
  54.                     $userAgent
  55.                 );
  56.                 //$this->container->get('App\Service\SlackNotification')->sendErrors($message);
  57.             }
  58.         } catch (\Exception $e) {
  59.             $message $e->getMessage();
  60.             //$this->container->get('App\Service\SlackNotification')->sendErrors($e->getMessage());
  61.         }
  62.    
  63.         // Customize your response object to display the exception details
  64.         $response = new Response();
  65.         $response->setContent($message);
  66.         // HttpExceptionInterface is a special type of exception that
  67.         // holds status code and header details
  68.         if ($exception instanceof HttpExceptionInterface) {
  69.             $response->setStatusCode($exception->getStatusCode());
  70.             $response->headers->replace($exception->getHeaders());
  71.         } else {
  72.             $response->setStatusCode(Response::HTTP_INTERNAL_SERVER_ERROR);
  73.         }
  74.         // sends the modified response object to the event
  75.         $event->setResponse($response);
  76.         // $page = $this->container->get('twig')->render('Errors\page-not-found.html.twig');
  77.         // $event->setResponse(
  78.         //     new Response(
  79.         //         $page,
  80.         //         Response::HTTP_SERVICE_UNAVAILABLE
  81.         //     )
  82.         // );
  83.         $event->stopPropagation();
  84.     }
  85. }