Le registre de Gorm

Exercice 4 sur 6 du chapitre 10 · 290 XP · 5 objectifs vérifiés par des tests

Notions abordées : Transitions depuis un contrôleurGardes#[AsGuardListener]TransitionBlockerworkflow_transitions()

Gorm tient le registre des réservations sur un vieux cahier plein de ratures. Pipin lui a préparé une page, /cuisine/registre, qui liste les réservations et propose un bouton pour chaque transition possible. Il ne reste qu'à faire fonctionner ces boutons, et à poser deux règles de la maison :

Les gardes

Une garde empêche une transition dans certaines conditions. Elle s'écrit de deux façons :

Les gardes s'appliquent partout : can(), apply(), et même dans Twig. Le registre n'affiche que les boutons permis.

Votre mission

  1. Faites fonctionner les boutons du registre : un jeton CSRF valide, la transition si elle est possible, un message, puis retour au registre.
  2. Seul le patron peut annuler.
  3. On n'honore pas une réservation avant son jour, et le registre explique pourquoi (« Le repas n'a pas encore eu lieu »).
  4. Une transition impossible, ou qui n'existe pas, est expliquée dans un message d'erreur, sans erreur 500.

Pour essayer : connectez-vous avec bruna@dragon-ivre.fr / marmite (cuisinière), puis avec gorm@dragon-ivre.fr / tonneau (patron), et ouvrez le Registre.