salut,
j'essaye de faire un formulaire contenant des sous formulaires de collections imbriquées.
Voici la composition du formType :
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
24
25
26
27
28
29
30
31
32 class ParentFormType extends AbstractType { public function buildForm(FormBuilderInterface $builder, array $options) { $builder ->add('case', 'choice', array( 'choices' => array( 'case1' => 'case1', 'case2' => 'case2', 'case3' => 'case3', ))) ->add ('subForm1', 'collection', array ( 'type' => new Sub1FormType(), 'allow_add' => true, 'allow_delete' => true, 'by_reference' => false )) ; $builder->add('save',"submit") ; } public function setDefaultOptions(OptionsResolverInterface $resolver) { } public function getName() { return 'formtestparenttype'; } }
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
24
25
26 class Sub1FormType extends AbstractType { public function buildForm(FormBuilderInterface $builder, array $options) { $builder ->add('fieldSub1',"text" ) ->add ('childForm1', 'collection', array ( 'type' => new Sub2FormType, 'allow_add' => true, 'allow_delete' => true, 'by_reference' => false )) ; } public function setDefaultOptions(OptionsResolverInterface $resolver) { } public function getName() { return 'formtestsub1type'; } }dans le controller :
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
24
25
26 class Sub2FormType extends AbstractType { public function buildForm(FormBuilderInterface $builder, array $options) { $builder ->add('fieldSub2',"text" ) ->add ('childForm1', 'collection', array ( 'type' => "text", 'allow_add' => true, 'allow_delete' => true, 'by_reference' => false )) ; } public function setDefaultOptions(OptionsResolverInterface $resolver) { } public function getName() { return 'formtestsub2type'; } }
La ou je bloque, c'est sur la partie js pour ajouter dynamiquement les sous sous collections, est ce que quelqu'un aurait une idée, un exemple ?
Code : Sélectionner tout - Visualiser dans une fenêtre à part $form = $this->createForm(new ParentFormType() ) ;
J'arrive à gérer les collections de profondeurs de niveau 1 mais pas de niveau 2.
merci,
ben
Partager