Une question de débutant :
Je crée régulièrement des formulaires "custom" depuis, un controlleur, j'y insere des formulaires simple ou des "Fieldsets" à partir du builder avec la méthod add.
je récupère ensuite mon abjet mappé dans le controlleur avec $form->getData().
Je n'arrive cependant pas à "atteindre" l'objet principal de mon formulaire quand je suis DANS le formulaires.
Exemple :
Voici le code (simmplifié ) du formulaire
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 // Création dans le contrôleur $form = $this->createForm(new RessourceForm(), $ressource,array());
et celui du "Fieldset"
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 class RessourceForm extends AbstractType { public function __construct(Router $router, $entityId, $helps) { //... } public function buildForm(FormBuilder $builder, array $options) { parent::buildForm($builder, $options); //comment acceder ici à l'instance ( et ses propriétés ) de l'objet passé lors de la création du formulaire ( attendu class Ressource ) // $this->detData(); -> erreur method non existante //ressource = $builder->getData(); -> apparemment ok $builder->add('Description', new RessourceFormDescriptionFieldset()); //... } public function getDefaultOptions(array $options) { return array( 'data_class' => 'CS\PomModelBundle\Entity\Scenario\Ressource', 'label' => 'Ressource' ); } }
Toute remarque sur mon incompréhension du fontionnement des formulaires,
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 RessourceFormInformationFieldset extends FormType { // ... public function __construct(Router $router, $entityId, $helps) { // ... } public function buildForm(FormBuilder $builder, array $options) { parent::buildForm($builder, $options); //comment acceder ici à l'instance ( et ses propriétés ) de l'objet passé lors de la créattion du formulaire ( attendu class Ressource ) // object qui possede donc une propriété cdressource $builder->add('cdressource', 'text', array( 'required' => true, 'label' => 'Code', )); //... } public function getDefaultOptions(array $options) { return array_merge(parent::getDefaultOptions($options), array('data_class' => 'CS\PomModelBundle\Entity\Scenario\Ressource'), $options ); } }
ou toute idée autre est bienvenue.
Merci d'avance
Partager