# 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';
}
}
```