Bonjour à tous,
J'ai un petit problème avec la persistance de mes entités.
J'ai des 'sousMenu' qui ont une relation OneToMany vers des 'lienSousMenu'. Je peux ajouter dynamiquement des 'lienSousMenu' mais le problème c'est que ceux qui sont rajoutés dynamiquement, sont dupliqués à chaque fois que je soumets mon formulaire.
Un peu de code pour éclaircir la situation :
sous menu :
lien sous menu :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 /** * @ORM\OneToMany(targetEntity="LienSousMenu", mappedBy="sousMenu", cascade={"persist"}) */ private $lienSousMenu;
sous menu handler
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 /** * @ORM\ManyToOne(targetEntity="Neo10\CMSBundle\Entity\SousMenu", inversedBy="lienSousMenu") */ protected $sousMenu;
sous menu type
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6 public function onSuccess(SousMenu $sousMenu) { $this->em->persist($sousMenu); $this->em->flush(); }
Voilà je ne sais pas si ça vous suffit, sinon n'hésitez pas ! Ça peut être important à savoir (ou pas), il y a aussi une relation 'oneToMany' entre une entité menu et 'sousMenu' (et encore une entre menusConfigurateur et menu ...).
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 public function buildForm(FormBuilder $builder, array $options) { $builder ->add('titre') ->add('file', 'file',array('required'=>false)) ->add('position','choice',array( 'choices' => array( '0' => 'gauche', '1' => 'centre', '2' => 'droite', ))) ->add('lienSousMenu','collection', array('type' => new lienSousMenuType(), 'allow_add' => true, 'by_reference' => false)); }
Donc en gros par défaut quand l'utilisateur se connecte une première fois j'instancie un menusConfigurateur lié à 4 Menus
qui sont eux mêmes liés à 3 sousMenus chacun
qui sont eux mêmes liés à un lienSousMenu.
Mais lorsque je souhaite rajouter dynamiquement des lienSousMenu ceux ci sont bien crées mais sont dupliqués à chaque fois que je submit mon formulaire.
A noter que dans la base de données lienSousMenu contient un champ id_sousMenu qui vaut null pour les lienSousMenu ajoutés dynamiquement, alors que pour les premiers cités ils sont correctement renseignés.
Voilà je compte sur vous pour me donner des pistes! Merci à ceux qui prendront du temps à essayer de résoudre ce problème !
Partager