src/Form/ContactType.php line 17

Open in your IDE?
  1. <?php
  2. namespace App\Form;
  3. use Symfony\Component\Form\AbstractType;
  4. use Symfony\Component\Form\Extension\Core\Type\EmailType;
  5. use Symfony\Component\Form\Extension\Core\Type\TextareaType;
  6. use Symfony\Component\Form\Extension\Core\Type\TextType;
  7. use Symfony\Component\Form\FormBuilderInterface;
  8. use Symfony\Component\OptionsResolver\OptionsResolver;
  9. use Symfony\Component\Validator\Constraints\Email;
  10. use Symfony\Component\Validator\Constraints\NotBlank;
  11. use Symfony\Component\Form\Extension\Core\Type\ChoiceType;
  12. use Symfony\Component\Form\Extension\Core\Type\CheckboxType;
  13. use Symfony\Component\Validator\Constraints\IsTrue;
  14. class ContactType extends AbstractType
  15. {
  16. public function buildForm(FormBuilderInterface $builder, array $options): void
  17. {
  18. $builder
  19. ->add('name', TextType::class, [
  20. 'label' => 'Nom complet',
  21. 'constraints' => [new NotBlank(['message' => 'Veuillez saisir votre nom'])],
  22. 'attr' => ['class' => 'form-control', 'placeholder' => 'Votre nom']
  23. ])
  24. ->add('email', EmailType::class, [
  25. 'label' => 'Adresse email',
  26. 'constraints' => [
  27. new NotBlank(['message' => 'Veuillez saisir votre email']),
  28. new Email(['message' => 'Veuillez saisir un email valide'])
  29. ],
  30. 'attr' => ['class' => 'form-control', 'placeholder' => 'Votre adresse email']
  31. ])
  32. ->add('subject', ChoiceType::class, [
  33. 'label' => 'Objet de votre demande',
  34. 'choices' => [
  35. 'Demande de rendez-vous (200€)' => 'rendez-vous',
  36. 'Consultation vidéo (130€)' => 'consultation-video',
  37. 'Consultation écrite (150€)' => 'consultation-ecrite',
  38. 'Question simple (40€)' => 'question-simple',
  39. 'Autre demande' => 'autre'
  40. ],
  41. 'constraints' => [new NotBlank(['message' => 'Veuillez sélectionner un sujet'])],
  42. 'attr' => ['class' => 'form-select']
  43. ])
  44. ->add('phone', TextType::class, [
  45. 'label' => 'Téléphone',
  46. 'required' => false,
  47. 'attr' => ['class' => 'form-control', 'placeholder' => 'Votre numéro de téléphone']
  48. ])
  49. ->add('message', TextareaType::class, [
  50. 'label' => 'Votre message (max 1000 caractères pour une question simple)',
  51. 'constraints' => [new NotBlank(['message' => 'Veuillez saisir votre message'])],
  52. 'attr' => ['class' => 'form-control', 'rows' => 5, 'placeholder' => 'Décrivez brièvement votre situation...']
  53. ])
  54. ->add('rgpd', CheckboxType::class, [
  55. 'label' => 'J\'accepte que mes données soient traitées dans le cadre de ma demande. Le cabinet garantit la stricte confidentialité de nos échanges.',
  56. 'mapped' => false,
  57. 'constraints' => [
  58. new IsTrue([
  59. 'message' => 'Vous devez accepter les conditions pour envoyer votre message.',
  60. ]),
  61. ],
  62. ])
  63. ;
  64. }
  65. public function configureOptions(OptionsResolver $resolver): void
  66. {
  67. $resolver->setDefaults([
  68. // Configure your form options here
  69. ]);
  70. }
  71. }