<?php
namespace App\Event;
use App\Kernel;
use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\HttpFoundation\Response;
use Symfony\Component\HttpKernel\Event\ExceptionEvent;
use Symfony\Component\HttpKernel\Event\ResponseEvent;
use Symfony\Component\HttpKernel\Exception\NotFoundHttpException;
use Twig\Environment;
class ExceptionListener
{
private $twig;
private $request;
public function __construct(
Environment $environment
)
{
$this->twig=$environment;
}
public function onKernelException(ExceptionEvent $event):void{
$exception=$event->getThrowable();
if(!$exception instanceof NotFoundHttpException){
return;
}
$content=$this->twig->render('exception/not_found.html.twig',[
'companyName' =>"Loger",
]);
$event->setResponse((new Response())->setContent($content));
}
public function onKernelResponse(ResponseEvent $event)
{
if (!$event->getKernel()->isDebug()) {
return;
}
$request = $event->getRequest();
if (!$request->isXmlHttpRequest()) {
return;
}
$response = $event->getResponse();
$response->headers->set('Symfony-Debug-Toolbar-Replace', 1);
}
public function getRequest()
{
if ($this->kernel->getContainer()->has('request')) {
$request = $this->kernel->getContainer()->get('request');
} else {
$request = Request::createFromGlobals();
}
return $request;
}
}