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';
	}
}
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';
	}
}
dans le controller :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
 $form = $this->createForm(new ParentFormType() ) ;
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 ?
J'arrive à gérer les collections de profondeurs de niveau 1 mais pas de niveau 2.
merci,
ben