# Symfony - Exercices - Kernel events ###### tags: `Symfony` `gobelins` ## Exercice 1 Quels sont les différents évènements gérés par le kernel symfony ? [Kernel symfony events doc](https://symfony.com/doc/3.0/reference/events.html#kernel-events) [Kernel symfony events dispatcher doc](https://symfony.com/doc/current/event_dispatcher.html) ## Exercice 2 Créer une nouvelle classe qui implémente l'interface `Symfony\Component\EventDispatcher\EventSubscriberInterface` afin de rediriger automatiquement l'utilisateur qui se trouve sur l'url *A* vers *B*. ```php <?php // src/EventSubscriber/KernelEventSubscriber.php namespace App\EventSubscriber; use Symfony\Component\EventDispatcher\EventSubscriberInterface; use Symfony\Component\HttpKernel\Event\RequestEvent; use Symfony\Component\HttpKernel\KernelEvents; class KernelEventSubscriber implements EventSubscriberInterface { public static function getSubscribedEvents() { // return the subscribed events, their methods and priorities return [ KernelEvents::REQUEST => 'onKernelRequest', KernelEvents::VIEW => 'onKernelView' ]; } public function onKernelRequest() { if('index' !== $this->getRouteName($event->getRequest())) { return; } $url = $this->router->generate('hop'); $event->setResponse(new RedirectResponse($url)); } public function onKernelView() { if('hop' !== $this->getRouteName($event->getRequest())) { return; } $url = $this->router->generate('hop'); } } ``` ## Exercice 3 Intégrer le code source ci-dessous, comment est-il possible d'obtenir une "Response" fonctionnelle sans modifier le code du controller ? ```php <?php declare(strict_types=1); namespace App\Controller; use Symfony\Bundle\FrameworkBundle\Controller\AbstractController; use Symfony\Component\Routing\Annotation\Route; /** * Class HelloController. * * @author Jérôme Fath * * @Route("/hello", name="hello_") */ final class HelloController extends AbstractController { /** * @Route("/", name="index") */ public function index() { return 'WTF'; } } ```