<?php
namespace App\EventListener;
use Symfony\Component\HttpKernel\Event\RequestEvent;
use Symfony\Component\HttpFoundation\Response;
use Twig\Environment;
use Twig\Error\LoaderError;
use Twig\Error\RuntimeError;
use Twig\Error\SyntaxError;
class MaintenanceListener
{
public function __construct(private readonly Environment $twig)
{
}
/**
* @throws SyntaxError
* @throws RuntimeError
* @throws LoaderError
*/
public function onKernelRequest(RequestEvent $event): void
{
if (file_exists(__DIR__ . '/../../var/maintenance.lock')) {
$htmlContent = $this->twig->render('front/maintenance/global-maintenance.html.twig');
$response = new Response(
$htmlContent,
Response::HTTP_SERVICE_UNAVAILABLE
);
// Arrêter l'événement avant que Symfony ne traite la requête
$event->setResponse($response);
$event->stopPropagation();
}
}
}