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 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124
|
class ReservationType extends AbstractType
{
/**
* @param FormBuilderInterface $builder
* @param array $options
*/
public function buildForm(FormBuilderInterface $builder, array $options)
{
$builder
->add('type', ChoiceType::class, array(
'choices' => array(
'Stage' => 'Stage',
'Stagiaire' => 'Stagiaire',
'Chambre d\'hôte' => 'Hote',
'Gîte' => 'Gite',
'Camping Famille' => 'Camping Famille',
'Wooffer, Stagiaire' => 'Wooffer, Stagiaire',
'Famille, Amis' => 'Famille, Amis',
),
'label' => 'Type de réservation',
'required' => true,
'placeholder' => 'Choisir un type de réservation '
))
->add('periode',PeriodeType::class)
->add('valide', CheckboxType::class, array(
'label' => 'Réservation Confirmée',
'required' => false,
))
;
$formModifierType = function (FormInterface $form, $type) {
if ($type == null) {
$form
->add('typeChoisi', HiddenType::class, array(
'data' => array(),
'mapped' => false,
));
}
else {
$EntityType='Damias\ResaBundle\Form\\'.$type.'Type';
$class='DamiasResaBundle:'.$type;
$label=$type.' ';
$form
->remove('typeChoisi')
->add('typeChoisi', EntityType::class, array(
'class' => $class,
'choice_label' => 'nom',
'label' => $label,
'required' => false,
'placeholder' => 'Nouveau '.$type,
'mapped' => false
))
->add($type, $EntityType)
;
}
};
/*$formModifierTypeChoisi = function (FormInterface $form, $typeChoisi, $type) {
if ($typeChoisi == 0) {
$form
->remove($type, $EntityType)
->add($type, $EntityType)
;
}
else {
$EntityType='Damias\ResaBundle\Form\\'.$type.'Type';
$Repository='Damias\ResaBundle\Repository\\'.$type.'Repository';
$class='DamiasResaBundle:'.$type;
$label=$type.' ';
$form
->remove('typeChoisi')
->add('typeChoisi', EntityType::class, array(
'class' => $class,
'choice_label' => 'nom',
'label' => $label,
'required' => false,
'placeholder' => 'Nouveau '.$type,
'mapped' => false
))
->add($type, new $EntityType, array(
'query_builder' => function($Repository) {
return $repository->getRepository('DamiasResaBundle:'.$type)->find($typeChoisi);
}
));
}
};*/
$builder->addEventListener(FormEvents::PRE_SET_DATA, function (FormEvent $event) use ($formModifierType) {
$reservation = $event->getData();
//echo 'PRE_SET_DATA => $reservation->getType() = '.$reservation->getType();
$type = null === $reservation->getType() ? null : $reservation->getType();
//if ($type != null) {
$formModifierType($event->getForm(), $type);
//}
});
$builder->get('type')->addEventListener(FormEvents::PRE_SUBMIT, function (FormEvent $event) use ($formModifierType) {
$type = $event->getData();
$formModifierType($event->getForm()->getParent(), $type);
});
/*if (null !== $builder->get('typeChoisi')) {
$builder->get('typeChoisi')->addEventListener(FormEvents::PRE_SUBMIT, function (FormEvent $event) use ($formModifierTypeChoisi) {
$type = $event->getData();
$typeChoisi = $event->getData();
$formModifierTypeChoisi($event->getForm()->getParent(), $typeChoisi, $type);
});
}*/
}
/**
* @param OptionsResolver $resolver
*/
public function configureOptions(OptionsResolver $resolver)
{
$resolver->setDefaults(array(
'data_class' => 'Damias\ResaBundle\Entity\Reservation'
));
}
} |
Partager