Le lundi, Bruna fait les marchés et Gorm compte les tonneaux : la taverne est fermée. Jusqu'ici, Pipin accrochait un écriteau sur la porte, mais le site, lui, continue d'accepter les réservations. Il faut une règle qui s'applique à toutes les pages de la salle, sans toucher à chaque contrôleur.
Les événements du noyau
Pour chaque requête, Symfony annonce les étapes de son travail sous forme d'événements : kernel.request (la requête arrive), kernel.controller, kernel.response, kernel.exception… N'importe quel service peut les écouter. C'est comme ça que fonctionnent le routeur, le pare-feu et le profiler.
Et quand un écouteur de kernel.request fournit lui-même une réponse, Symfony n'appelle pas le contrôleur.
Votre mission
Complétez l'écouteur FermeLeLundi :
- le lundi, les pages de la salle (les routes de
SALLE) répondent 503 avec la pagefermeture.html.twig; - les autres jours, rien ne change ;
- les cuisines, l'API des guildes et la connexion restent ouvertes ;
- une page inconnue reste une 404.
Lisez l'heure avec l'horloge reçue dans le constructeur, pas avec new \DateTimeImmutable() : c'est ce qui permet aux tests de choisir le jour. En développement, Pipin a même arrêté l'horloge un lundi midi (config/packages/horloge.yaml) : l'aperçu doit afficher la fermeture.