Le slug d'un plat (ragout-du-nain, dans /plat/ragout-du-nain) se calculait dans le contrôleur de la cuisine. Mais les plats arrivent aussi par les commandes, par le festin du vendredi, par les tests… et à chaque fois, quelqu'un doit penser au slug. Pipin a oublié une fois : plat enregistré, erreur SQL, soirée gâchée.
Il a donc retiré le calcul du contrôleur. Désormais, c'est à Doctrine de s'en occuper.
Les événements de Doctrine
Doctrine aussi annonce ce qu'il fait : prePersist (juste avant d'insérer une entité), preUpdate, postRemove… Un écouteur d'entité réagit à ces événements pour une classe précise. Le slug est alors garanti, d'où que vienne le plat.
Votre mission
Complétez SlugDuPlat :
- un plat enregistré sans slug en reçoit un, tiré de son nom (« Tourte aux Pommes » donne
tourte-aux-pommes) ; - accents et ponctuation disparaissent (« Crème brûlée à l'Œuf » donne
creme-brulee-a-l-oeuf) ; - un slug choisi à la main est respecté : ceux de la carte (
ragout-du-nain) ne changent pas ; - deux plats ne partagent jamais un slug :
ragout, puisragout-2, puisragout-3; - la cuisine fonctionne de nouveau.
Pour essayer : connectez-vous avec bruna@dragon-ivre.fr / marmite et inventez un plat.