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 42 43 44 45
|
class MyUserType extends AbstractType{
public function buildForm(FormBuilderInterface $builder, array $options)
{
$mode=$options['mode'];
if($mode=='by_fieldset'){
//dans ce mode on ajouter 2 formulaire de type MyUserType,
// l'option inherited_data permet de binder les valeurs à l'entité actuelles (sinon le formulaire chercherait les attributs "etatCivil" et "coordonnees" sur l'objet User
$builder->add('etatCivil',$this,array('mode'=>'etat_civil','inherit_data'=>true))
->add('coordonnees',$this,array('mode'=>'coordonnees','inherit_data'=>true));
}
if($mode=='all'||$mode=='etat_civil'){
$builder->add('nom')
->add('prenom')
->add('dateDeNaissance');
}
if($mode=='all'||$mode=='coordonnees'){
$builder->add('telephone')
->add('email');
}
}
public function setDefaultOptions(OptionsResolverInterface $resolver)
{
$resolver->setDefaults(array(
'data_class' => 'My\Bundle\Entity\User',
'mode'=>'all'
));
$resolver->setAllowedValues(array(
'mode'=>array( //l'option mode a 4 options possibles avec des champs organisés différemment
'all',//tout les champs dans un seul formulaire, valeur par défaut
'by_fieldset',//tout les champs dans 2 sous-formaires
'etat_civil',//les champs concernant l'état-civil
'coordonnees'//les champs concernant les coordonées
)
));
}
} |
Partager