Bruna invente un plat

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

Notions abordées : persistSlugger

Bruna a une idée par jour, et elle en a assez de passer par le SQL de la console. Elle veut une page pour ajouter ses plats : /cuisine/nouveau-plat. Le formulaire est prêt, et la navigation y mène déjà (lien « Cuisine »).

Votre mission

Dans CuisineController::nouveauPlat(), à la soumission du formulaire (POST) :

  1. Lisez les champs nom, description, prix et specialite.
  2. Refusez les données invalides, avec le code 422 et un message :
    • pas de nom → « Donnez un nom au plat. » ;
    • un prix nul ou négatif → « Le prix doit être supérieur à zéro. » ;
    • un plat déjà à la carte (même slug) → « Ce plat est déjà à la carte. ».
  3. Créez le Plat, avec un slug tiré de son nom (« Soupe à l'oignon » → soupe-a-l-oignon).
  4. Enregistrez-le, puis redirigez vers sa fiche.

Rappel

L'EntityManager est le gardien de la base. persist() lui confie un nouvel objet ; flush() écrit tout ce qui a changé, en une transaction. Le slugger de Symfony transforme un texte en identifiant d'URL, accents et apostrophes compris.