Récupérer un object DANS un (sous ) formulaire
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 :
Code:
1 2 3
|
// Création dans le contrôleur
$form = $this->createForm(new RessourceForm(), $ressource,array()); |
Voici le code (simmplifié ) du formulaire
Code:
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'
);
}
} |
et celui du "Fieldset"
Code:
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
);
}
} |
Toute remarque sur mon incompréhension du fontionnement des formulaires,
ou toute idée autre est bienvenue.
Merci d'avance