Closed FabRiviere closed 1 year ago
symfony console make:subscriber TwigEventSubscriber
Répondre à la question sur le choix de l'événement à écouter : Pour notre cas, nous voulons que l'écoute se fasse juste avant l'appel d'un contrôleur. Nous devons donc écouter Symfony\Component\HttpKernel\ControllerEvent, ou donner la réponse simplifiée :
kernel.controller
class TwigEventSubscriber implements EventSubscriberInterface
{
private $twig;
private $conferenceRepository;
public function __construct(Environment $twig, ConferenceRepository $conferenceRepository)
{
$this->twig = $twig;
$this->conferenceRepository = $conferenceRepository;
}
public function onKernelController(ControllerEvent $event): void
{
$this->twig->addGlobal('conferences', $this->conferenceRepository->findAll());
}
public static function getSubscribedEvents(): array
{
return [
KernelEvents::CONTROLLER => 'onKernelController',
];
}
}
Un subscriber est un listener avec une méthode statique getSubscribedEvents() qui retourne sa configuration. Ceci permet aux subscribers d'être enregistrés automatiquement dans le dispatcher Symfony. Nous allons donc créer ce subscriber pour avoir accès à la variable "conferences" de manière globale dans Twig. (Plutôt que devoir mettre le repository à chaque fois en arguments des fonctions de contrôleurs.)