<?php
namespace App\Listener;
use Psr\Log\LoggerInterface;
use Symfony\Component\HttpFoundation\Response;
use Symfony\Component\HttpKernel\Event\ExceptionEvent;
use Twig\Environment as Twig;
use Twig\Error\RuntimeError;
class ExceptionListener
{
protected $twig;
protected $env;
protected $logger;
public function __construct(Twig $twig, $env, LoggerInterface $logger)
{
$this->twig = $twig;
$this->env = $env;
$this->logger = $logger;
}
public function onKernelException(ExceptionEvent $event)
{
$exception = $event->getThrowable();
if ( $this->env == 'prod') {
if ($exception instanceof \Error || $exception instanceof RuntimeError) {
$template = $this->twig->render('@Twig/Exception/error500.html.twig');
$response = new Response();
$response->setContent($template);
$event->setResponse($response);
$this->logger->error($exception->getMessage());
}
}
}
}