src/Form/RegistrationFormType.php line 21

Open in your IDE?
  1. <?php
  2. namespace App\Form;
  3. use App\Entity\Users;
  4. use Symfony\Component\Form\AbstractType;
  5. use Symfony\Component\Form\Extension\Core\Type\CheckboxType;
  6. use Symfony\Component\Form\Extension\Core\Type\PasswordType;
  7. use Symfony\Component\Form\FormBuilderInterface;
  8. use Symfony\Component\OptionsResolver\OptionsResolver;
  9. use Symfony\Component\Validator\Constraints\IsTrue;
  10. use Symfony\Component\Validator\Constraints\Email;
  11. use Symfony\Component\Validator\Constraints\Length;
  12. use Symfony\Component\Validator\Constraints\NotBlank;
  13. use Symfony\Component\Form\Extension\Core\Type\TextType;
  14. use Symfony\Component\Form\Extension\Core\Type\RepeatedType;
  15. use Symfony\Component\Validator\Constraints\Regex;
  16. use Symfony\Component\Form\Extension\Core\Type\ChoiceType;
  17. use Symfony\Component\Form\Extension\Core\Type\EmailType;
  18. class RegistrationFormType extends AbstractType
  19. {
  20.     public function buildForm(FormBuilderInterface $builder, array $options): void
  21.     {
  22.         $builder
  23.             ->add('firstname'TextType::class, [
  24.                 'label' => 'Prénom',
  25.                 'constraints' => [
  26.                     new NotBlank([
  27.                         'message' => 'Veuillez entrer votre prénom.',
  28.                     ]),
  29.                 ],
  30.             ])
  31.             ->add('lastname'TextType::class, [
  32.                 'label' => 'Nom',
  33.                 'constraints' => [
  34.                     new NotBlank([
  35.                         'message' => 'Veuillez entrer votre nom.',
  36.                     ]),
  37.                 ],
  38.             ])
  39.             ->add('email'EmailType::class, [
  40.                 'label' => 'Email',
  41.                 'constraints' => [
  42.                     new NotBlank([
  43.                         'message' => 'Veuillez entrer votre adresse e-mail.',
  44.                     ]),
  45.                     new Email([
  46.                         'message' => 'Veuillez entrer une adresse e-mail valide.',
  47.                     ]),
  48.                 ],
  49.             ])
  50.             ->add('numberPhone'TextType::class, [
  51.                 'label' => 'Numéro de téléphone',
  52.                 'constraints' => [
  53.                     new NotBlank([
  54.                         'message' => 'Veuillez entrer votre numéro de téléphone.',
  55.                     ]),
  56.                 ],
  57.             ])
  58.             ->add('plainPassword'RepeatedType::class, [
  59.                 // instead of being set onto the object directly,
  60.                 // this is read and encoded in the controller
  61.                 'type' => PasswordType::class,
  62.                 'invalid_message' => "The password fields must match.",
  63.                 'mapped' => false,
  64.                 'attr' => ['autocomplete' => 'new-password'],
  65.                 'constraints' => [
  66.                     new NotBlank([
  67.                         'message' => 'Please enter a password',
  68.                     ]),
  69.                     new Length([
  70.                         'min' => 8,
  71.                         'minMessage' => 'Your password should be at least {{ limit }} characters',
  72.                         // max length allowed by Symfony for security reasons
  73.                         'max' => 4096,
  74.                     ]),
  75.                     new RegEx([
  76.                         'pattern' => '/^(?=.*[A-Z]).+$/',
  77.                         'message' => 'Your password must contain at least one capital letter.',
  78.                     ])
  79.                 ],
  80.             ])
  81.             ->add('tvaNumber'TextType::class, [
  82.                 'label' => 'N° TVA',
  83.                 'constraints' => [
  84.                     new NotBlank([
  85.                         'message' => 'Veuillez entrer votre numéro de TVA.',
  86.                     ]),
  87.                 ],
  88.             ])
  89.             ->add('cgvAccepted'CheckboxType::class, [
  90.                 'mapped' => false,
  91.                 'constraints' => [
  92.                     new IsTrue([
  93.                         'message' => 'Vous devez accepter les conditions générales.',
  94.                     ]),
  95.                 ],
  96.                 'label' => 'J\'accepte les Conditions générales de ventes de Delsart',
  97.             ])
  98.             ->add('tvaStatus'ChoiceType::class, [
  99.                 'choices'  => [
  100.                     'Assujetti' => '1',
  101.                     'Non assujetti' => '2',
  102.                     'En cours' => '3',
  103.                 ],
  104.                 'label' => 'Statut TVA',
  105.                 'mapped' => false,  // Champ non mappé à l'entité Users
  106.                 'attr' => ['class' => 'form-control'],
  107.                 'placeholder' => 'Sélectionnez un statut',
  108.                 'data' => '1',
  109.             ]);
  110.         ;
  111.     }
  112.     public function configureOptions(OptionsResolver $resolver): void
  113.     {
  114.         $resolver->setDefaults([
  115.             'data_class' => Users::class,
  116.         ]);
  117.     }
  118. }