Relisez le CuisineController de Bruna : lire chaque champ, convertir le prix, retrouver la catégorie, réafficher les valeurs saisies… Soixante lignes pour un seul formulaire. Et il en faudra bientôt d'autres (modifier un plat, laisser un avis).
Symfony a un composant pour ça : Form. On décrit le formulaire une fois, dans une classe, et Symfony s'occupe du HTML, de la lecture de la requête, des conversions et de la protection CSRF.
Votre mission
- Complétez
App\Form\PlatType, lié à l'entitéPlat: champsnom,description(zone de texte),prix(nombre),specialite(case à cocher, facultative) etcategorie, choisie dans la base et affichée par son nom. - Réécrivez
CuisineController::nouveauPlat()avec ce formulaire : quand il est soumis et valide, donnez au plat un slug tiré de son nom, enregistrez-le, puis redirigez vers sa fiche. - Affichez le formulaire dans
cuisine/nouveau.html.twig, avec un bouton « Ajouter à la carte ».
Rappel
$form->handleRequest($request) remplit l'objet Plat avec les données envoyées. Vous n'avez plus à lire $request->request vous-même. Le champ caché _token protège le formulaire contre les requêtes forgées depuis un autre site (CSRF) : Symfony le vérifie tout seul.
La validation des données (nom obligatoire, prix positif…) sera l'objet du prochain exercice.