src/Form/ContactType.php line 18

Open in your IDE?
  1. <?php
  2. namespace App\Form;
  3. use Symfony\Component\Form\AbstractType;
  4. use Symfony\Component\Form\Extension\Core\Type\CheckboxType;
  5. use Symfony\Component\Form\Extension\Core\Type\ChoiceType;
  6. use Symfony\Component\Form\Extension\Core\Type\EmailType;
  7. use Symfony\Component\Form\Extension\Core\Type\SubmitType;
  8. use Symfony\Component\Form\Extension\Core\Type\TelType;
  9. use Symfony\Component\Form\Extension\Core\Type\TextareaType;
  10. use Symfony\Component\Form\Extension\Core\Type\TextType;
  11. use Symfony\Component\Form\FormBuilderInterface;
  12. use Symfony\Component\OptionsResolver\OptionsResolver;
  13. use Karser\Recaptcha3Bundle\Form\Recaptcha3Type;
  14. use Karser\Recaptcha3Bundle\Validator\Constraints\Recaptcha3;
  15. class ContactType extends AbstractType
  16. {
  17.     public function buildForm(FormBuilderInterface $builder, array $options): void
  18.     {
  19.         $builder
  20.             ->add('name'TextType::class, [
  21.                 'label' => 'Nom et prénom *',
  22.                 'required' => true,
  23.                 'label_attr' => [
  24.                     'class'=> 'label-form'
  25.                 ],
  26.                 'attr' => [
  27.                     'class' => 'input-form',
  28.                     'placeholder' => 'Votre nom et prénom',
  29.                 ]
  30.             ])
  31.             ->add('postalcode'TextType::class, [
  32.                 'label' => 'Code postal *',
  33.                 'required' => true,
  34.                 'label_attr' => [
  35.                     'class'=> 'label-form'
  36.                 ],
  37.                 'attr' => [
  38.                     'class' => 'input-form',
  39.                     'placeholder' => 'Votre code postal',
  40.                 ]
  41.             ])
  42.             ->add('email'EmailType::class, [
  43.                 'label' => 'Email *',
  44.                 'required' => true,
  45.                 'label_attr' => [
  46.                     'class'=> 'label-form'
  47.                 ],
  48.                 'attr' => [
  49.                     'class' => 'input-form',
  50.                     'placeholder' => 'Votre adresse mail',
  51.                 ]
  52.             ])
  53.             ->add('phone'TelType::class, [
  54.                 'label' => 'Numéro de téléphone *',
  55.                 'label_attr' => [
  56.                     'class'=> 'label-form'
  57.                 ],
  58.                 'attr' => [
  59.                     'class' => 'input-form',
  60.                     'placeholder' => 'Votre numéro de téléphone',
  61.                     'pattern' => '^(0|\+33)[1-9]([-. ]?[0-9]{2}){2,4}$',
  62.                 ]
  63.             ])
  64.             ->add('choice'ChoiceType::class, [
  65.                 'label' => 'Prestation désirée *',
  66.                 'required' => true,
  67.                 'choices'  => [
  68.                     'Couverture' => "Couverture",
  69.                     'Isolation thermique extérieur' => "Isolation thermique extérieur",
  70.                     'Isolation des combles' => "Isolation des combles",
  71.                     'Ravalement de façade' => "Ravalement de façade",
  72.                     'Intérieur' => "Intérieur",
  73.                 ],
  74.                 'expanded'  => false,
  75.                 'multiple'  => false,
  76.                 'label_attr' => [
  77.                     'class'=> 'label-form'
  78.                 ],
  79.                 'attr' => [
  80.                     'class' => 'input-form',
  81.                     'placeholder' => 'Couverture, Isolation, Ravalement de façade,...',
  82.                 ]
  83.             ])
  84.             ->add('message'TextareaType::class, [
  85.                 'label' => 'Message *',
  86.                 'required' => true,
  87.                 'label_attr' => [
  88.                     'class'=> 'label-form'
  89.                 ],
  90.                 'attr' => [
  91.                     'class' => 'input-form',
  92.                     'placeholder' => "Description des travaux (pièce, surface, matériaux souhaité....)",
  93.                     'cols' => '30',
  94.                     'rows' => '10',
  95.                 ]
  96.             ])
  97.             ->add('dataPolicy'CheckboxType::class, [
  98.                 'label' => "En soumettant ce formulaire, j'accepte que mes informations soient utilisées exclusivement dans le cadre de ma demande et de la relation commerciale éthique et personnalisée qui pourrait en découler.",
  99.                 'required' => true,
  100.                 'mapped' => false,
  101.                 'label_attr' => [
  102.                     'class'=> 'label-form',
  103.                 ],
  104.                 'attr' => [
  105.                     'class' => 'checkbox-effect checkbox-effect-1',
  106.                 ]
  107.             ])
  108.             ->add('submit'SubmitType::class, [
  109.                 'label' => "FAIRE MA DEMANDE DE DEVIS",
  110.                 'attr'=>[
  111.                     'class' => 'btn-devis',
  112.                 ]
  113.             ])
  114.             ->add('captcha'Recaptcha3Type::class, [
  115.                 'constraints' => new Recaptcha3(),
  116.                 'action_name' => 'contact',
  117.             ])
  118.         ;
  119.     }
  120.     public function configureOptions(OptionsResolver $resolver): void
  121.     {
  122.         $resolver->setDefaults([
  123.             // Configure your form options here
  124.         ]);
  125.     }
  126. }