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

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
])

 

Dans La table associative ne se remplit pas lors de l'envoi d'un formulaire avec Symfony par Benoit le 1 août 2020, 18:06:48