Bonjour,

je rencontre un souci pour créer un formulaire composé de plusieurs formulaires imbriqués.

j'ai deux types PhotocopyType et ReprographyType, qui contiennent plusieurs champs dont tous les deux un champ lié à une entité Binding.
Exemple pour la classe PhotocopyType (même chose pour reprographyType)
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
class PhotocopyType extends AbstractType
{
 
    public function buildForm(FormBuilderInterface $builder, array $options)
    {    	
       $builder 
         ...
  	->add('binding','impression_demand_binding_key', array(
                       'label' => 'demand.add_demand_binding.label',
        	       'required' => true	));
}
}
Le classe BindingKeyType :
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
33
34
35
36
37
38
39
40
41
class BindingKeyType extends AbstractType
{
 
		private $bindingService;
		/**
		 * 
		 * @var string type de demande (photocopy ou reprography)
		 */
		private $type;
 
		public function __construct(  BindingService $service)
		{
 
			$this->type = $type;
			$this->bindingService = $service;
 
		}
    		public function setDefaultOptions(OptionsResolverInterface $resolver)
		{
 
 
			$resolver->setDefaults(
			array(
					'choices' => $this->bindingService->getBindingKeyChoices($this->type),
					'preferred_choices' => $this->bindingService->getDefaultBindingKey($this->type),
					'class' => 'ImpressionDemandBundle:Binding',
					'property' =>'name',
			));
		}
		public function getParent()
		{
			return 'entity';
		}
 
		public function getName()
		{
			return 'impression_demand_binding_key';
		}
 
 
}
Cette classe fait appel au service BindingService, qui est défini dans le fichier service.xml comme suit :
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
   impression_demand_binding_form_key:
      class:  Impression\DemandBundle\Form\BindingKeyType
      arguments: [type, @impression_demand.service.binding_service]
      tags:
          - { name: form.type, alias: impression_demand_binding_key }
 
   impression_demand.service.binding_service:
      class:  Impression\DemandBundle\Service\BindingService
      arguments: [@impression_demand.doctrine.binding_manager]
      calls: 
          - [ setLogger, [@impression_user.logger]]
 
   impression_demand.doctrine.binding_manager:
      class:   Impression\DemandBundle\Doctrine\BindingManager
      arguments: [@doctrine.orm.entity_manager,%impression_demand.entity.binding.class%]
Cela marche correctement mais je souhaiterais ajouter un papramètre qui permet de construire différemment la liste des choix de Binding selon que c'est PhotocopyType ou ReprographyType qui l'appelle.
J'ai essayé en passant par quelque chose du type new BindingKeyType($param), mais le problème est que dans ce cas le bindingService de la classe BindingKeyType n'est pas instancié.

Quelqu'un aurait-il une idée ?