src/Form/ContactFormType.php line 23

Open in your IDE?
  1. <?php
  2. namespace App\Form;
  3. use App\Entity\Evosimul;
  4. use App\Entity\SimulSitePanneaux;
  5. use Karser\Recaptcha3Bundle\Form\Recaptcha3Type;
  6. use Karser\Recaptcha3Bundle\Validator\Constraints\Recaptcha3;
  7. use Symfony\Component\Form\AbstractType;
  8. use Symfony\Component\Form\Extension\Core\Type\ButtonType;
  9. use Symfony\Component\Form\Extension\Core\Type\CheckboxType;
  10. use Symfony\Component\Form\Extension\Core\Type\ChoiceType;
  11. use Symfony\Component\Form\Extension\Core\Type\EmailType;
  12. use Symfony\Component\Form\Extension\Core\Type\IntegerType;
  13. use Symfony\Component\Form\Extension\Core\Type\NumberType;
  14. use Symfony\Component\Form\Extension\Core\Type\TextareaType;
  15. use Symfony\Component\Form\FormBuilderInterface;
  16. use Symfony\Component\OptionsResolver\OptionsResolver;
  17. use Symfony\Component\Form\Extension\Core\Type\DateType;
  18. use Symfony\Component\Form\Extension\Core\Type\SubmitType;
  19. use Symfony\Component\Form\Extension\Core\Type\TextType;
  20. class ContactFormType extends AbstractType
  21. {
  22.     public function buildForm(FormBuilderInterface $builder, array $options)
  23.     {
  24.         $builder
  25.             /*->add('depart', ChoiceType::Class,[
  26.                 'label'=>'Votre département',
  27.                 'choices' =>[
  28.                     'Charente'=> 16,
  29.                     'Corrèze'=> 19,
  30.                     'Creuse'=> 23,
  31.                     'Dordogne'=> 24,
  32.                     'Haute-Vienne'=> 87,
  33.                     'Autre'=> 99
  34.                 ],
  35.             ])
  36.             ->add('projet', ChoiceType::Class,[
  37.                 'label'=>'Type de projet',
  38.                 'choices' =>[
  39.                     'Isolation de combles'=> 'Isolation de combles',
  40.                     'Isolation de sols'=> 'Isolation de sols',
  41.                     'Inject Styrene'=> 'Inject Styrene',
  42.                     'Pompe à chaleur'=> 'Pompe à chaleur',
  43.                     'Panneaux solaires'=> 'Panneaux solaires',
  44.                     'Borne de recharge'=> 'Borne de recharge',
  45.                     'Autre'=> 'Autre'
  46.                 ],
  47.             ])
  48.             ->add('m2', IntegerType::Class,[
  49.                 'required'=>true,
  50.                 'label'=>'Surface du logement'
  51.             ])
  52.             ->add('chauf', ChoiceType::class, [
  53.                 'label'=>'Type de chauffage',
  54.                 'choices'=>[
  55.                     'Electricité'=> 1,
  56.                     'Fioul'=> 2,
  57.                     'Bois'=> 3,
  58.                     'Gaz de ville'=> 4,
  59.                     'Gaz propane'=> 5,
  60.                     'Pompe à chaleur'=> 6
  61.                 ],
  62.             ])
  63.             ->add('const', ChoiceType::class, [
  64.                 'label'=>'Date de construction',
  65.                 'choices'=>[
  66.                     'Moins de 2 ans' => 1,
  67.                     'Plus de 2 ans' => 2,
  68.                     'Plus de 15 ans' => 3
  69.                 ],
  70.             ])*/
  71.             ->add('nom',TextType::Class)
  72.             ->add('prenom',TextType::Class)
  73.             ->add('cp',TextType::Class,[
  74.                 'label'=>'Code postal',
  75.             ])
  76.             ->add('ville',TextType::Class)
  77.             ->add('comments',TextareaType::Class,[
  78.                 'label'=>'Commentaire',
  79.             ])
  80.             ->add('email',EmailType::Class,[
  81.                 'required'=>false
  82.             ])
  83.             ->add('tel',TextType::Class,[
  84.                 'required'=>false,
  85.                 'label'=>'Téléphone',
  86.             ])
  87.             ->add('captcha'Recaptcha3Type::class, [
  88.                 'constraints' => new Recaptcha3(),
  89.                 'action_name' => 'contact',
  90.             ])
  91.             ->add('type'ChoiceType::Class,[
  92.                 'label'=>'Vous êtes :',
  93.                 'choices' =>[
  94.                     'Particulier'=> 'Particulier',
  95.                     'PME'=> 'PME',
  96.                     'Collectivité'=> 'Collectivité'
  97.                 ],
  98.                 'choice_attr'=>['class' => 'form-check-inline'],
  99.                 'expanded'=> true
  100.             ])
  101.             ->add('sujet'ChoiceType::Class,[
  102.                 'label'=>'Je contacte Evo-Logis pour :',
  103.                 'choices' =>[
  104.                     'Demander un devis'=> 'Devis',
  105.                     'Une demande d\'information '=> 'Demande information',
  106.                     'Prendre rendez-vous avec un conseiller'=> 'RDV conseillé',
  107.                     'Être rappelé par téléphone'=> 'Rappel téléphone',
  108.                     'Obtenir des précisions sur les aides disponibles'=> 'Précision aides disponibles',
  109.                     'Autres'=> 'Autres'
  110.                 ],
  111.             ])
  112.             ->add('projet'ChoiceType::Class,[
  113.                 'label'=>'Type de projet',
  114.                 'choices' =>[
  115.                     'Panneaux solaires'=> 'Panneaux solaires',
  116.                     'Pompe à chaleur / climatisation'=> 'Pompe à chaleur / clim',
  117.                     'Isolation'=> 'Isolation',
  118.                     'Borne de recharge'=> 'Borne de recharge',
  119.                     'Autre'=> 'Autre'
  120.                 ],
  121.             ])
  122.             ->add('rappel'CheckboxType::class,[
  123.                 'label' => 'Je souhaite être rappelé(e)',
  124.             ])
  125.             ->add('submit',SubmitType::class,[
  126.                 'label' => 'Envoyer',
  127.                 'attr' => ['class' => 'form-send-button'],
  128.                 'row_attr' => ['class' => 'text-center mt-4']
  129.             ])
  130.         ;
  131.     }
  132.     public function configureOptions(OptionsResolver $resolver)
  133.     {
  134.         $resolver->setDefaults([
  135.             'data_class' => Evosimul::class,
  136.             'csrf_protection' => false,
  137.             // the name of the hidden HTML field that stores the token
  138.             'csrf_field_name' => '_token',
  139.             // an arbitrary string used to generate the value of the token
  140.             // using a different string for each form improves its security
  141.             'csrf_token_id'   => 'simul'
  142.         ]);
  143.     }
  144. }