Bruna corrige sa carte

Exercice 3 sur 6 du chapitre 3 · 180 XP · 5 objectifs vérifiés par des tests

Notions abordées : Formulaire d'éditionRoute {slug:plat}

Faute de frappe sur la carte : la « Tourte elfique aux champigons ». Et le prix du ragoût doit augmenter (le nain grincheux réclame une augmentation). Bruna veut pouvoir modifier un plat sans passer par la console.

Bonne nouvelle : PlatType sert aussi bien à créer qu'à modifier. Il suffit de le lier à un plat existant.

Votre mission

  1. Ajoutez à CuisineController une action modifierPlat() sur /cuisine/plat/{slug}/modifier (route app_modifier_plat) :
    • le plat est retrouvé à partir du slug de l'URL (404 s'il n'existe pas) ;
    • le formulaire PlatType s'affiche, pré-rempli ;
    • s'il est soumis et valide : enregistrez, ajoutez le message flash « Le plat a été modifié. », puis redirigez vers la fiche.
  2. Écrivez le template cuisine/modifier.html.twig, avec un bouton « Enregistrer ».
  3. Sur la fiche d'un plat, ajoutez un lien « Modifier ».

Le slug ne change pas quand le nom change : les liens déjà partagés vers la fiche doivent rester valides.

Rappel

Un objet chargé depuis la base est suivi par Doctrine : au flush(), ses modifications sont écrites. persist() ne sert qu'aux nouveaux objets.