src/Form/UserType.php line 22

Open in your IDE?
  1. <?php
  2. namespace App\Form;
  3. use App\Entity\User;
  4. use Symfony\Component\Form\AbstractType;
  5. use Symfony\Component\Form\FormBuilderInterface;
  6. use Symfony\Component\OptionsResolver\OptionsResolver;
  7. use Symfony\Component\Form\Extension\Core\Type\TelType;
  8. use Symfony\Component\Form\Extension\Core\Type\TextType;
  9. use Symfony\Component\Form\Extension\Core\Type\EmailType;
  10. use Symfony\Component\Form\Extension\Core\Type\ChoiceType;
  11. use Symfony\Component\Form\Extension\Core\Type\PasswordType;
  12. use Symfony\Component\Form\Extension\Core\Type\RepeatedType;
  13. use Symfony\Component\Validator\Constraints\Email;
  14. use Symfony\Component\Validator\Constraints\Length;
  15. use Symfony\Component\Validator\Constraints\NotBlank;
  16. use App\Validator\Constraints\UniqueEmail;
  17. class UserType extends AbstractType
  18. {
  19.     public function buildForm(FormBuilderInterface $builder, array $options): void
  20.     {
  21.         $builder
  22.             ->add('civility'ChoiceType::class, [
  23.                 'label' => 'Type de profil',
  24.                 'choices' => [
  25.                     'M.' => 'Monsieur',
  26.                     'Mme' => 'Madame',
  27.                     'Entreprise' => 'Entreprise',
  28.                     'Association' => 'Association'
  29.                 ],
  30.                 'attr' => [
  31.                     'class' => 'chosen-select no-search-select pl-125',
  32.                 ],
  33.                 'placeholder' => '-Choisir votre type de profil-',
  34.                 'constraints' => [
  35.                     new NotBlank([
  36.                         'message' => 'Veuillez entrer votre type de profil !',
  37.                     ]),
  38.                 ],
  39.                 'required' => true
  40.             ])
  41.             ->add('lastname'TextType::class, [
  42.                 'label' => 'Nom ',
  43.                 'attr' => [
  44.                     'maxlength' => 60
  45.                 ],
  46.                 'constraints' => [
  47.                     new Length([
  48.                         'min' => 3,
  49.                         'minMessage' => 'Le nom doit avoir au moins {{ limit }} caractères.',
  50.                     ]),
  51.                     new NotBlank([
  52.                         'message' => 'Veuillez entrer votre nom !',
  53.                     ]),
  54.                 ],
  55.                 'required' => true
  56.             ])
  57.             ->add('firstname'TextType::class, [
  58.                 'label' => 'Prénom',
  59.                 'attr' => [
  60.                     'maxlength' => 60
  61.                 ],
  62.                 'constraints' => [
  63.                     new Length([
  64.                         'min' => 3,
  65.                         'minMessage' => 'Le prénom doit avoir au moins {{ limit }} caractères.',
  66.                     ]),
  67.                     new NotBlank([
  68.                         'message' => 'Veuillez entrer prénom !',
  69.                     ]),
  70.                 ],
  71.                 'required' => true
  72.             ])
  73.             ->add('email'EmailType::class, [
  74.                 'label' => 'Email',
  75.                 'attr' => [
  76.                     'maxlength' => 180
  77.                 ],
  78.                 'constraints' => [
  79.                     new NotBlank([
  80.                         'message' => 'Veuillez entrer votre email !',
  81.                     ]),
  82.                     new Email([
  83.                         'message' => 'L\'adresse email "{{ value }}" n\'est pas valide.',
  84.                     ]),
  85.                     new UniqueEmail([
  86.                         'message' => 'Cet e-mail est déjà utilisé par un autre compte.',
  87.                     ]),
  88.                 ],
  89.                 'required' => true,
  90.             ])
  91.             ->add('password'RepeatedType::class, [
  92.                 'mapped' => false,
  93.                 'attr' => [
  94.                     'minlength' => 8
  95.                 ],
  96.                 'constraints' => [
  97.                     new Length([
  98.                         'min' => 8,
  99.                         'minMessage' => 'Le mot de passe doit avoir au moins {{ limit }} caractères.',
  100.                     ]),
  101.                     new NotBlank([
  102.                         'message' => 'Veuillez entrer votre mot de passe !',
  103.                     ]),
  104.                 ],
  105.                 'type' => PasswordType::class,
  106.                 'invalid_message' => 'Le deux mots de passe ne sont pas identiques !',
  107.                 'options' => [
  108.                     'attr' => [
  109.                         'maxlength' => 255,
  110.                         'autocomplete' => 'off',
  111.                     ]
  112.                 ],
  113.                 'required' => true,
  114.                 'first_options' => [
  115.                     'label' => 'Mot de passe',
  116.                     'attr' => [
  117.                         'placeholder' => 'Mot de passe',
  118.                     ]
  119.                 ],
  120.                 'second_options' => [
  121.                     'label' => 'Confirmer le mot de passe',
  122.                     'attr' => [
  123.                         'placeholder' => 'Confirmer le mot de passe'
  124.                     ]
  125.                 ]
  126.             ])
  127.         ;
  128.     }
  129.     public function configureOptions(OptionsResolver $resolver): void
  130.     {
  131.         $resolver->setDefaults([
  132.             'data_class' => User::class,
  133.         ]);
  134.     }
  135. }