Bonjour,
Je viens quérir votre aide concernant un point dont je suis persuadé de l'avoir déjà réussis mais qui cette fois refuse de fonctionner.
Pour faire simple, je n'arrive pas à utiliser la moindre relation manyToMany bidirectionnelle dans un formulaire...
Pour exemple, une classe UserUser et une classe UserGroup.
Un utilisateur peut appartenir a différent groupe et bien évidement un groupe peu contenir plusieur user.
Lorsque je génér mon formulaire UserGroup:
Pas le moindre soucis, je peux ajouter les users, les supprimer. Ça fonctionne parfaitement.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23 public function buildForm(FormBuilderInterface $builder, array $options) { $builder ->add('name') ->add('description') ->add('userUsers', EntityType::class, array( 'class' => 'AcmeUserBundle:UserUser', 'query_builder' => function( \Doctrine\ORM\EntityRepository $er ) use ($options) { return $er->createQueryBuilder('g') ->where('g.deleted = false'); }, 'choice_label' => 'username', 'multiple' => true, 'expanded' => true, 'required' => false )) ->add('submit', SubmitType::class) ; }
Mais si je tente la même chose dans le formulaire Useruser:
Et bien ici, le formulaire se valide mais ne semble pas propager la modification...
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20 public function buildForm(FormBuilderInterface $builder, array $options) { $builder ->add('username') ->add('userGroups', EntityType::class, array( 'class' => 'AcmeUserBundle:UserGroup', //'choices' => $options['userGroups'], 'query_builder' => function( \Doctrine\ORM\EntityRepository $er ) use ($options) { return $er->createQueryBuilder('g') ->where('g.deleted = false'); }, 'choice_label' => 'name', 'multiple' => true, 'expanded' => true, 'required' => false )) ->add('submit', Type\SubmitType::class) ; }
J'ai tenté diverses modifications dans le controller pour vérifier et dans aucun cas, il ne sauvegarde mes changements.
La logique voudrais que je me sois planté dans la déclaration des relations...
UserGroup:
UserUser:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6 /** * @ORM\ManyToMany(targetEntity="Acme\UserBundle\Entity\UserUser", inversedBy="userGroups", cascade={"persist"}) * @ORM\JoinTable(name="join_usergroups_userusers") */ private $userUsers;
A vous de me dire, mais celà me semble correct...
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 /** * @ORM\ManyToMany(targetEntity="Acme\UserBundle\Entity\UserGroup", mappedBy="userUsers", cascade={"persist"}) */ private $userGroups;
Je suis persuadé que mon erreur est une bêtise, mais pas moyen de la résoudre...
Merci à vous,
Dyron
Partager