src/Form/RegistrationFormType.php line 21

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\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\TextType;
  10. use Symfony\Component\Form\FormBuilderInterface;
  11. use Symfony\Component\Form\FormEvent;
  12. use Symfony\Component\Form\FormEvents;
  13. use Symfony\Component\HttpFoundation\RequestStack;
  14. use Symfony\Component\OptionsResolver\OptionsResolver;
  15. use Symfony\Component\Validator\Constraints\IsTrue;
  16. use Symfony\Component\Validator\Constraints\Length;
  17. use Symfony\Component\Validator\Constraints\NotBlank;
  18. class RegistrationFormType extends AbstractType
  19. {
  20.     private $request;
  21.     public function __construct(RequestStack $requestStack)
  22.     {
  23.         $this->request $requestStack->getCurrentRequest();
  24.     }
  25.     public function buildForm(FormBuilderInterface $builder, array $options): void
  26.     {
  27.         $builder
  28.             ->add('email'EmailType::class, [
  29.                 'label' => 'Email',
  30.                 'label_attr' => ['class' => 'font-size-h6 font-weight-bolder text-dark'],
  31.                 'attr' => ['class' => 'form-control form-control-solid h-auto py-7 px-6 border-0 rounded-lg font-size-h6''placeholder' => 'Email']
  32.             ])
  33.             ->add('firstName'TextType::class, [
  34.                 'label' => 'Prénom',
  35.                 'label_attr' => ['class' => 'font-size-h6 font-weight-bolder text-dark'],
  36.                 'attr' => ['class' => 'form-control form-control-solid h-auto py-7 px-6 border-0 rounded-lg font-size-h6''placeholder' => 'Prénom']
  37.             ])
  38.             ->add('lastName'TextType::class, [
  39.                 'label' => 'Nom',
  40.                 'label_attr' => ['class' => 'font-size-h6 font-weight-bolder text-dark'],
  41.                 'attr' => ['class' => 'form-control form-control-solid h-auto py-7 px-6 border-0 rounded-lg font-size-h6''placeholder' => 'Nom']
  42.             ])
  43.             ->add('phoneNumber'TextType::class, [
  44.                 'label' => 'Numéro de téléphone',
  45.                 'label_attr' => ['class' => 'font-size-h6 font-weight-bolder text-dark'],
  46.                 'attr' => ['class' => 'form-control form-control-solid h-auto py-7 px-6 border-0 rounded-lg font-size-h6''placeholder' => 'Numéro de téléphone']
  47.             ])
  48.             ->add('company'CompanyType::class, [
  49.                 'label' => false
  50.             ])
  51.             ->add('avatar'ImageManagerType::class, [
  52.                 'label' => 'Avatar',
  53.                 'required' => false
  54.             ])
  55.             ->addEventListener(FormEvents::PRE_SET_DATA, function(FormEvent $event){
  56.                 $form $event->getForm();
  57.                 
  58.                 if ($this->request->get('_route') !== 'bo_user_profile') {
  59.                     $form->add('plainPassword'PasswordType::class, [
  60.                         // instead of being set onto the object directly,
  61.                         // this is read and encoded in the controller
  62.                         'mapped' => false,
  63.                         'label' => 'Mot de passe',
  64.                         'label_attr' => ['class' => 'font-size-h6 font-weight-bolder text-dark'],
  65.                         'attr' => ['class' => 'form-control form-control-solid h-auto py-7 px-6 border-0 rounded-lg font-size-h6''autocomplete' => 'new-password'],
  66.                         'constraints' => [
  67.                             new NotBlank([
  68.                                 'message' => 'Veuillez renseigner un mot de passe',
  69.                             ]),
  70.                             new Length([
  71.                                 'min' => 6,
  72.                                 'minMessage' => 'Votre mot de passe doit être au minimum {{ limit }} caractères',
  73.                                 // max length allowed by Symfony for security reasons
  74.                                 'max' => 4096,
  75.                             ]),
  76.                         ],
  77.                     ])
  78.                     ->add('isManager'ChoiceType::class, [
  79.                         'label' => 'Superviseur ?',
  80.                         'label_attr' => ['class' => 'font-size-h6 font-weight-bolder text-dark'],
  81.                         'attr' => ['class' => 'form-control form-control-solid h-auto py-7 px-6 border-0 rounded-lg font-size-h6''placeholder' => 'Superviseur ?'],
  82.                         'choices' => [
  83.                             'Oui' => true,
  84.                             'Non' => false
  85.                         ],
  86.                         //'required' => false
  87.                     ]);
  88.                 }
  89.             });
  90.         ;
  91.     }
  92.     public function configureOptions(OptionsResolver $resolver): void
  93.     {
  94.         $resolver->setDefaults([
  95.             'data_class' => User::class,
  96.         ]);
  97.     }
  98. }