src/Form/Type/UserRegisterType.php line 17

  1. <?php
  2. namespace App\Form\Type;
  3. use App\Entity\User;
  4. use Symfony\Component\Form\AbstractType;
  5. use Symfony\Component\Form\Extension\Core\Type\ChoiceType;
  6. use Symfony\Component\Form\Extension\Core\Type\PasswordType;
  7. use Symfony\Component\Form\Extension\Core\Type\RepeatedType;
  8. use Symfony\Component\Form\Extension\Core\Type\SubmitType;
  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\OptionsResolver\OptionsResolver;
  14. class UserRegisterType extends AbstractType
  15. {
  16.     public function buildForm(FormBuilderInterface $builder, array $options): void
  17.     {
  18.         $builder
  19.             ->add('email'TextType::class)
  20.             ->add('firstname'TextType::class)
  21.             ->add('lastname'TextType::class)
  22.             ->add('plain_password'RepeatedType::class, [
  23.                 'type'            => PasswordType::class,
  24.                 'invalid_message' => 'The password fields must match.',
  25.                 'options'         => ['attr' => ['class' => 'password-field']],
  26.                 'required'        => true,
  27.                 'first_options'   => ['label' => 'Password'],
  28.                 'second_options'  => ['label' => 'Repeat''label_attr' => ['class' => 'text-muted']],
  29.                 'mapped'          => false,
  30.             ])
  31.             ->add('register'SubmitType::class)
  32.         ;
  33.         $builder->addEventListener(FormEvents::PRE_SET_DATA, function(FormEvent $event) {
  34.             $builder $event->getForm();
  35.             /** @var User $user */
  36.             $user $event->getData();
  37.         });
  38.         $builder->addEventListener(FormEvents::SUBMIT, function(FormEvent $event) {
  39.             /** @var User $user */
  40.             $user $event->getData();
  41.             $form $event->getForm();
  42.             $user->setRoles(['ROLE_USER']);
  43.             $user->setStatus(User::STATUS_PENDING);
  44.             $event->setData($user);
  45.         });
  46.     }
  47.     public function configureOptions(OptionsResolver $resolver): void
  48.     {
  49.         $resolver->setDefaults([
  50.             'data_class'        => User::class,
  51.         ]);
  52.     }
  53. }