Chapitre 10 du parcours Symfony pour les devs PHP

La vie d'une réservation

6 exercices · 1 730 XP · environ 4 h 30

Ce chapitre fait travailler : MailerMailerInterfaceEmailMAILER_DSNassertEmailCountTemplatedEmailTemplate Twig d'e-mailurl() et path()Service d'envoiWorkflowMachine à étatsPlaces et transitionsmarking_storeinitial_markingTransitions depuis un contrôleurGardes#[AsGuardListener]TransitionBlockerworkflow_transitions()Événements du workflow#[AsEnteredListener]entered et leaveDébogage

Les exercices du chapitre

  1. Le premier parchemin

    Exercice 1 · 270 XP · 5 objectifs vérifiés par des tests

    Les réservations du site sont désormais enregistrées : Pipin a ajouté au formulaire l'adresse du voyageur et le jour de sa venue. Il manque la politesse de la maison : un parchemin de confirmation, envoyé à chaque réservation.

    MailerMailerInterfaceEmailMAILER_DSNassertEmailCount

  2. Un parchemin qui a de l'allure

    Exercice 2 · 270 XP · 5 objectifs vérifiés par des tests

    Le parchemin de confirmation part bien, mais Bruna le trouve triste : trois lignes de texte, pas le moindre dragon. Elle veut un vrai parchemin, mis en page, avec un lien pour découvrir la carte.

    TemplatedEmailTemplate Twig d'e-mailurl() et path()Service d'envoi

  3. La vie d'une réservation

    Exercice 3 · 280 XP · 5 objectifs vérifiés par des tests

    Une réservation a une vie : demandée par un voyageur, confirmée par la taverne, puis honorée le soir venu. Sauf si quelqu'un l'annule entre-temps. Aujourd'hui, rien ne l'empêche d'être honorée sans avoir été confirmée, ou annulée après le repas.

    WorkflowMachine à étatsPlaces et transitionsmarking_storeinitial_marking

  4. Le registre de Gorm

    Exercice 4 · 290 XP · 5 objectifs vérifiés par des tests

    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 :

    Transitions depuis un contrôleurGardes#[AsGuardListener]TransitionBlockerworkflow_transitions()

  5. Les parchemins du registre

    Exercice 5 · 280 XP · 5 objectifs vérifiés par des tests

    Il y a un souci dans la taverne : le voyageur reçoit « Votre table vous attend » dès qu'il remplit le formulaire. Or rien n'est encore confirmé : Gorm peut encore refuser la réservation, un soir de festin complet. Et quand il annule une réservation, le voyageur n'en sait rien.

    Événements du workflow#[AsEnteredListener]entered et leaveMailer

  6. 🐉 Boss : les parchemins égarés

    Exercice 6 · 340 XP · 5 objectifs vérifiés par des tests

    Pipin a « simplifié » le registre pendant que Gorm était à la foire aux bières. Depuis :

    DébogageWorkflowGardesÉvénements du workflowMailer