src/Form/Website/Type/Authentication/SubscriptionType.php line 23

Open in your IDE?
  1. <?php
  2. namespace App\Form\Website\Type\Authentication;
  3. use App\Security\Customer\Customer;
  4. use Symfony\Component\Form\AbstractType;
  5. use Symfony\Component\Form\Extension\Core\Type\CheckboxType;
  6. use Symfony\Component\Form\Extension\Core\Type\ChoiceType;
  7. use Symfony\Component\Form\Extension\Core\Type\EmailType;
  8. use Symfony\Component\Form\Extension\Core\Type\PasswordType;
  9. use Symfony\Component\Form\Extension\Core\Type\RepeatedType;
  10. use Symfony\Component\Form\Extension\Core\Type\SubmitType;
  11. use Symfony\Component\Form\Extension\Core\Type\TextType;
  12. use Symfony\Component\Form\FormBuilderInterface;
  13. use Symfony\Component\OptionsResolver\OptionsResolver;
  14. use Symfony\Component\Validator\Constraints\Email;
  15. use Symfony\Component\Validator\Constraints\IsTrue;
  16. use Symfony\Component\Validator\Constraints\NotBlank;
  17. /**
  18. * Formulaire d'inscription client
  19. */
  20. class SubscriptionType extends AbstractType
  21. {
  22. public function buildForm(FormBuilderInterface $builder, array $options): void
  23. {
  24. $existingCustomer = $options['existing_customer'];
  25. $builder
  26. ->add('civility', ChoiceType::class, [
  27. 'label' => 'Civilité',
  28. 'required' => true,
  29. 'choices' => [
  30. 'M.' => 'M.',
  31. 'Mme' => 'Mme',
  32. ],
  33. 'expanded' => true,
  34. 'multiple' => false,
  35. ])
  36. ->add('firstName', TextType::class, [
  37. 'label' => 'Prénom',
  38. 'required' => true,
  39. 'attr' => [
  40. 'placeholder' => 'Votre prénom',
  41. ],
  42. 'disabled' => $existingCustomer
  43. ])
  44. ->add('lastName', TextType::class, [
  45. 'label' => 'Nom',
  46. 'required' => true,
  47. 'attr' => [
  48. 'placeholder' => 'Votre nom',
  49. ],
  50. 'disabled' => $existingCustomer
  51. ])
  52. ->add('email', EmailType::class, [
  53. 'label' => 'Votre adresse email',
  54. 'required' => true,
  55. 'attr' => [
  56. 'placeholder' => 'Votreadressemail@email.fr',
  57. 'autocomplete' => 'email',
  58. ],
  59. 'disabled' => $existingCustomer
  60. ])
  61. ->add('plainPassword', PasswordType::class, [
  62. 'label' => 'Mot de passe',
  63. 'required' => true
  64. ])
  65. ->add('plainPasswordRepetition', PasswordType::class, [
  66. 'label' => 'Confirmation du mot de passe',
  67. 'attr' => [
  68. 'placeholder' => 'Confirmez votre mot de passe',
  69. 'autocomplete' => 'new-password',
  70. ],
  71. 'required' => true
  72. ])
  73. ->add('newsletterConsent', CheckboxType::class, [
  74. 'label' => 'website.forms.subscription.label.newsletter_consent',
  75. 'required' => false,
  76. ])
  77. ->add('privacyConsent', CheckboxType::class, [
  78. 'label' => 'website.forms.subscription.label.privacy_consent',
  79. 'label_html' => true,
  80. 'required' => true,
  81. 'constraints' => [
  82. new IsTrue([
  83. 'message' => 'Vous devez accepter les conditions générales d’utilisation et la politique de confidentialité.',
  84. ]),
  85. ],
  86. ])
  87. ->add('submit', SubmitType::class, [
  88. 'label' => 'Créer mon compte',
  89. 'attr' => [
  90. 'class' => 'btn btn-primary',
  91. ],
  92. ]);
  93. }
  94. public function configureOptions(OptionsResolver $resolver): void
  95. {
  96. $resolver->setDefaults([
  97. 'data_class' => Customer::class,
  98. 'validation_groups' => ['customer_form_validator', 'Default'],
  99. 'existing_customer' => false
  100. ]);
  101. $resolver->setRequired('existing_customer');
  102. $resolver->setAllowedTypes('existing_customer', 'bool');
  103. }
  104. }