src/Form/ContactType.php line 17

Open in your IDE?
  1. <?php
  2. namespace App\Form;
  3. use App\Entity\Contact;
  4. use Karser\Recaptcha3Bundle\Form\Recaptcha3Type;
  5. use Karser\Recaptcha3Bundle\Validator\Constraints\Recaptcha3;
  6. use Symfony\Component\Form\AbstractType;
  7. use Symfony\Component\Form\Extension\Core\Type\CheckboxType;
  8. use Symfony\Component\Form\Extension\Core\Type\EmailType;
  9. use Symfony\Component\Form\Extension\Core\Type\SubmitType;
  10. use Symfony\Component\Form\Extension\Core\Type\TextareaType;
  11. use Symfony\Component\Form\Extension\Core\Type\TextType;
  12. use Symfony\Component\Form\FormBuilderInterface;
  13. use Symfony\Component\OptionsResolver\OptionsResolver;
  14. class ContactType extends AbstractType
  15. {
  16.     public function buildForm(FormBuilderInterface $builder, array $options): void
  17.     {
  18.         $builder
  19.             ->add('name'TextType::class, [
  20.                 'attr' => [
  21.                     'class' => 'input input__text',
  22.                     'placeholder' => 'Votre nom et prénom*',
  23.                 ],
  24.             ])
  25.             ->add('email'EmailType::class, [
  26.                 'attr' => [
  27.                     'class' => 'input input__email',
  28.                     'placeholder' => 'Votre email*',
  29.                 ],
  30.             ])
  31.             ->add('phone'TextType::class, [
  32.                 'attr' => [
  33.                     'class' => 'input input__tel',
  34.                     'placeholder' => 'Votre téléphone',
  35.                 ],
  36.                 'required' => false,
  37.             ])
  38.             ->add('subject'TextType::class, [
  39.                 'attr' => [
  40.                     'class' => 'input input__text',
  41.                     'placeholder' => 'Votre projet*',
  42.                 ],
  43.             ])
  44.             ->add('message'TextareaType::class, [
  45.                 'attr' => [
  46.                     'class' => 'input input__textarea',
  47.                     'placeholder' => 'Votre message*',
  48.                 ],
  49.             ])
  50.             ->add('rgpd'CheckboxType::class, [
  51.                 'attr' => [
  52.                     'class' => 'input input__checkbox',
  53.                 ],
  54.                 'label' => "Votre adresse email est uniquement utilisée pour envoyer votre message. 
  55.                     Votre adresse de messagerie sera conservée 18 mois à partir de l'envoi de votre message. 
  56.                     Vous pouvez à tout moment utiliser votre droit à l'oubli en me contactant*",
  57.                 'mapped' => false,
  58.             ])
  59.             ->add('captcha'Recaptcha3Type::class, [
  60.                 'constraints' => new Recaptcha3(),
  61.                 'action_name' => 'contact_form',
  62.             ])
  63.             ->add('submit'SubmitType::class, [
  64.                 'attr' => [
  65.                     'class' => 'input__submit btn btn-primary',
  66.                 ],
  67.                 'label' => 'Envoyer',
  68.             ])
  69.         ;
  70.     }
  71.     public function configureOptions(OptionsResolver $resolver): void
  72.     {
  73.         $resolver->setDefaults([
  74.             'data_class' => Contact::class,
  75.         ]);
  76.     }
  77. }