Depuis le controller, c’est un appel du formulaire classique, on ajoute juste les éventuelles options si besoins
Dans « ExampleFormType » définition de l’option « custom » et utilisation des « Form Events » pour adapter les champs
use Symfony\Component\Form\AbstractType;
use Symfony\Component\Form\FormBuilderInterface;
use Symfony\Component\OptionsResolver\OptionsResolver;
use Symfony\Component\Form\FormEvent;
use Symfony\Component\Form\FormEvents;
class ExampleFormType extends AbstractType {
public function buildForm(FormBuilderInterface $builder, array $options) {
$builder->addEventListener(FormEvents::PRE_SET_DATA, function (FormEvent $event) use($options) {
$example = $event->getData(); //recuperation de l'objet sur lequel le formulaire se base
$form = $event->getForm(); //recuperation du formulaire
//en fonction du type de l'utilisateur les champs sont différents
if ($example->getStatus() == 1 && $options['custom']) {
$form->add('firstName', null, array('label' => 'Prénom'));
//....
} else {
$form->add('lastName', null, array('label' => 'Nom'));
//....
}
});
}
public function configureOptions(OptionsResolver $resolver) {
$resolver->setDefaults(array(
'data_class' => 'AppBundle\Entity\Example',
'custom' => false
));
}
}
use Symfony\Component\Form\FormBuilderInterface;
use Symfony\Component\OptionsResolver\OptionsResolver;
use Symfony\Component\Form\FormEvent;
use Symfony\Component\Form\FormEvents;
class ExampleFormType extends AbstractType {
public function buildForm(FormBuilderInterface $builder, array $options) {
$builder->addEventListener(FormEvents::PRE_SET_DATA, function (FormEvent $event) use($options) {
$example = $event->getData(); //recuperation de l'objet sur lequel le formulaire se base
$form = $event->getForm(); //recuperation du formulaire
//en fonction du type de l'utilisateur les champs sont différents
if ($example->getStatus() == 1 && $options['custom']) {
$form->add('firstName', null, array('label' => 'Prénom'));
//....
} else {
$form->add('lastName', null, array('label' => 'Nom'));
//....
}
});
}
public function configureOptions(OptionsResolver $resolver) {
$resolver->setDefaults(array(
'data_class' => 'AppBundle\Entity\Example',
'custom' => false
));
}
}
Savoir si un champs est définis dans twig