src/Form/Type/GIRDirectMail/Etape0Type.php line 19

Open in your IDE?
  1. <?php
  2. namespace App\Form\Type\GIRDirectMail;
  3. use App\Entity\GIRDirectMail\Etape0;
  4. use App\Form\Type\ReCaptchaType;
  5. use App\Service\SessionManagerLMDVInterface;
  6. use Symfony\Component\Form\AbstractType;
  7. use Symfony\Component\Form\Extension\Core\Type\ChoiceType;
  8. use Symfony\Component\Form\Extension\Core\Type\SubmitType;
  9. use Symfony\Component\Form\FormBuilderInterface;
  10. use Symfony\Component\OptionsResolver\OptionsResolver;
  11. use Symfony\Component\Form\Extension\Core\Type\TextType;
  12. use Symfony\Component\Form\Extension\Core\Type\EmailType;
  13. use Symfony\Component\Form\Extension\Core\Type\TelType;
  14. use Symfony\Contracts\Translation\TranslatorInterface;
  15. class Etape0Type extends AbstractType
  16. {
  17.   const MAX_ADULTS 10;
  18.   const MAX_CHILDREN 10;
  19.   /**
  20.    * @var \Symfony\Contracts\Translation\TranslatorInterface
  21.    */
  22.   protected $translator;
  23.   /**
  24.    * @var \App\Service\SessionManagerLMDV
  25.    */
  26.   protected $sm;
  27.   public function __construct(TranslatorInterface $translatorSessionManagerLMDVInterface $sm) {
  28.     $this->translator $translator;
  29.     $this->sm $sm;
  30.   }
  31.   /**
  32.    *
  33.    * {@inheritDoc}
  34.    * @see \Symfony\Component\Form\AbstractType::configureOptions()
  35.    */
  36.   public function configureOptions(OptionsResolver $resolver) {
  37.       $resolver->setDefaults([
  38.           'data_class' => Etape0::class,
  39.       ]);
  40.   }
  41.   /**
  42.    *
  43.    * {@inheritDoc}
  44.    * @see \Symfony\Component\Form\AbstractType::buildForm()
  45.    */
  46.   public function buildForm(FormBuilderInterface $builder, array $options) {
  47.     $this->sm->setEntityNamespace('App\Entity\GIRDirectMail');
  48.     $voyage $this->sm->getDataFromSession();
  49.     $min_adults max(1$voyage->getAdults());
  50.     $min_children max(0$voyage->getChildren());
  51.     $choices_adults = [];
  52.     for($i $min_adults$i self::MAX_ADULTS$i++) {
  53.       $choices_adults[$this->translator->trans("etape0.adults.counter", ['count' => $i])] = $i;
  54.     }
  55.     $choices_children = [];
  56.     for($i $min_children$i self::MAX_CHILDREN$i++) {
  57.       $choices_children[$this->translator->trans("etape0.children.counter", ['count' => $i])] = $i;
  58.     }
  59.       $builder
  60.           ->add('nbrAdultes'ChoiceType::class, [
  61.               'choices'  => $choices_adults,
  62.               'choice_translation_domain' => FALSE
  63.               //'disabled' => TRUE,
  64.           ])
  65.           ->add('nbrEnfants'ChoiceType::class, [
  66.               'choices'  => $choices_children,
  67.               'choice_translation_domain' => FALSE
  68.               //'disabled' => TRUE,
  69.           ])
  70.           ->add('villeDepart'TextType::class, [
  71.               'label' => 'etape0.form.ville_depart',
  72.               'required' => TRUE,
  73.               'disabled' => TRUE,
  74.           ])
  75.           ->add('codeSociete'TextType::class, [
  76.               'label' => 'etape0.form.code_societe',
  77.               'required' => TRUE,
  78.               'disabled' => TRUE,
  79.           ])
  80.           ->add('nomVendeur'TextType::class, [
  81.               'label' => 'etape0.form.nom',
  82.               'required' => TRUE,
  83.               'disabled' => TRUE,
  84.           ])
  85.           ->add('prenomVendeur'TextType::class, [
  86.               'label' => 'etape0.form.prenom',
  87.               'required' => TRUE,
  88.               'disabled' => TRUE,
  89.           ])
  90.           ->add('telVendeur'TelType::class, [
  91.               'label' => 'etape0.form.tel',
  92.               'required' => TRUE,
  93.               'disabled' => TRUE,
  94.           ])
  95.           ->add('mailVendeur'EmailType::class, [
  96.               'label' => 'etape0.form.mail',
  97.               'required' => TRUE,
  98.               'disabled' => TRUE,
  99.           ])
  100.           ->add('codeAgent'TextType::class, [
  101.               'label' => 'etape0.form.code_agent',
  102.               'required' => TRUE,
  103.               'disabled' => TRUE,
  104.           ])
  105.           ->add('captcha'ReCaptchaType::class, [
  106.              'mapped' => FALSE,
  107.              'type' => 'invisible' // (invisible, checkbox)
  108.           ])
  109.           ->add('next'SubmitType::class, ['attr' => ['class' => 'use_captcha']])
  110.        ;
  111.     }
  112. }