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