src/Form/UserType.php line 18

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\DateTimeType;
  7. use Symfony\Component\Form\Extension\Core\Type\EmailType;
  8. use Symfony\Component\Form\Extension\Core\Type\HiddenType;
  9. use Symfony\Component\Form\Extension\Core\Type\PasswordType;
  10. use Symfony\Component\Form\Extension\Core\Type\RepeatedType;
  11. use Symfony\Component\Form\FormBuilderInterface;
  12. use Symfony\Component\Form\FormEvent;
  13. use Symfony\Component\Form\FormEvents;
  14. use Symfony\Component\OptionsResolver\OptionsResolver;
  15. class UserType extends AbstractType
  16. {
  17.     public function buildForm(FormBuilderInterface $builder, array $options): void
  18.     {
  19.         $builder
  20.             ->add('email'EmailType::class, [
  21.                 'attr' => [
  22.                     'placeholder' => 'form.user.email'
  23.                 ],
  24.             ])
  25.            
  26.             ->add('category'HiddenType::class, [
  27.                 'data' => $options['category']
  28.             ])
  29.         ;
  30.         if ($options['specialist_reg'] != true) {
  31.             $builder
  32.                 ->add('active'CheckboxType::class, [
  33.                     'label_attr' => [
  34.                         'class' => 'checkbox-switch',
  35.                     ],
  36.                     'required' => false,
  37.                 ]);
  38.         }
  39.         if ($options['pwd_required'] != false) {
  40.             $builder
  41.             ->add('password'RepeatedType::class, [
  42.                 'type' => PasswordType::class,
  43.                 'required' => $options['pwd_required'],
  44.                 'invalid_message' => 'The two passwords must match',
  45.                 'first_options' => [
  46.                     'attr' => [
  47.                         'placeholder' => 'form.user.first'
  48.                     ],
  49.                 ],
  50.                 'second_options' => [
  51.                     'attr' => [
  52.                         'placeholder' => 'form.user.second'
  53.                     ],
  54.                 ]
  55.             ]);
  56.         }
  57.     }
  58.     public function configureOptions(OptionsResolver $resolver): void
  59.     {
  60.         $resolver->setDefined([
  61.             'pwd_required',
  62.             'category'
  63.         ]);
  64.         $resolver->setAllowedTypes('pwd_required''bool');
  65.         $resolver->setAllowedTypes('category''string');
  66.         $resolver->setAllowedValues('category'User::GROUPS);
  67.         $resolver->setRequired([
  68.             'category'
  69.         ]);
  70.         $resolver->setDefaults([
  71.             'data_class' => User::class,
  72.             'label_format' => 'form.user.%name%',
  73.             'pwd_required' => true,
  74.             'specialist_reg' => false,
  75.             'cascade_validation' => true
  76.         ]);
  77.     }
  78. }