Le « Pain du voyageur » ne se vend plus depuis que Legolas a raconté partout qu'il faisait dormir trois jours. Bruna veut le retirer de la carte.
Supprimer, c'est modifier des données : jamais avec un simple lien (un robot qui explore le site, ou une image piégée sur un autre site, suffiraient à tout effacer). On passe par un formulaire POST, protégé par un jeton CSRF.
Votre mission
- Ajoutez à
CuisineControllerune actionsupprimerPlat()sur/cuisine/plat/{slug}/supprimer(routeapp_supprimer_plat), en POST uniquement :- vérifiez le jeton CSRF envoyé dans le champ
_token; s'il est invalide, refusez avec une erreur 403 ; - supprimez le plat, ajoutez le message flash « « Nom du plat » a quitté la carte. », puis redirigez vers la carte.
- vérifiez le jeton CSRF envoyé dans le champ
- Sur la fiche, ajoutez un petit formulaire POST vers cette action, avec le jeton en champ caché et un bouton « Retirer de la carte ».
Le jeton doit être propre au plat : utilisez un identifiant de jeton qui contient l'id du plat ('supprimer-plat-' ~ plat.id).
Les avis du plat partent avec lui : c'est configuré dans le mapping (cascade: ['remove']).
Rappel
Les formulaires de Symfony gèrent le CSRF tout seuls. Pour un formulaire écrit à la main, on utilise csrf_token() dans Twig et isCsrfTokenValid() dans le contrôleur.