[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


English language detected! 🇬🇧

  We noticed that your browser is using English. Do you want to read this post in this language?

Read the english version 🇬🇧 Close

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

  Travaillez avec moi !