La table associative ne se remplit pas lors de l'envoi d'un formulaire avec Symfony

Temps de lecture : 3 minutes environ.

Problème

Vous avez une relation ManyToMany entre 2 entités avec Symfony. Prenons l'exemple d'une entité Posts et une entité Tags, un post peut avoir plusieurs tags et un tag peut être dans plusieurs posts.

Lors de l'envoi du formulaire d'ajout de Posts, la table intermédiaire n'est pas remplie.

Solution possible

Cette situation se produit lorsque le formulaire n'est pas entièrement configuré.

Dans le formulaire, vous devez ajouter un champ pour les tags et définir comment ce champ doit se comporter.

Si nous configurons comme ceci

->add('tags', EntityType::class, [
'class' => Tags::class
])

Symfony cherchera une méthode "setTags" dans l'entité Posts.

Le problème est que la relation ManyToMany crée une méthode "addTags".

Nous allons donc demander à Symfony de ne pas rechercher la méthode "setTags" en ajoutant la propriété "by_reference"

->add('tags', EntityType::class, [
'class' => Tags::class,
'by_reference' => false
])

 

La table associative ne se remplit pas lors de l'envoi d'un formulaire avec Symfony
Article publié le

Catégories : Symfony FAQ

Mots-clés : Framework Symfony entites entity

Partager : Partager sur Facebook Partager sur Twitter Partager sur LinkedIn