[Symfony] Mise en place d'un subscriber d'événement pour une exception de type 404 NotFoundHttpException
Publié le 30/03/2023 • Actualisé le 30/03/2023
Dans ce bout de code, nous voyons comment mettre en place un subscriber d'événement pour une exception de type 404 NotFoundHttpException
. Ici, on teste le chemin ayant provoqué l'exception (ce chemin ne correspond donc à aucune route connue de l'application). On peut aussi consigner ou notifier, voir l'exemple de la documentation ci-dessous. Vous pouvez tester ce snippet ici.
<?php
declare(strict_types=1);
namespace App\Subscriber;
use Symfony\Component\EventDispatcher\EventSubscriberInterface;
use Symfony\Component\HttpFoundation\Response;
use Symfony\Component\HttpKernel\Event\ExceptionEvent;
use Symfony\Component\HttpKernel\Exception\NotFoundHttpException;
final class NotFoundExceptionSubscriber implements EventSubscriberInterface
{
public static function getSubscribedEvents(): array
{
return [
ExceptionEvent::class => 'onKernelException',
];
}
public function onKernelException(ExceptionEvent $event): void
{
$exception = $event->getThrowable();
if ($exception instanceof NotFoundHttpException) {
$path = $event->getRequest()->getPathInfo();
if ($path === '/404') {
$event->setResponse(new Response('404 found!'));
$event->stopPropagation();
}
}
}
}
Plus sur Stackoverflow Lire la doc Snippet aléatoire