src/Form/Type/Security/RegisterType.php line 18

Open in your IDE?
  1. <?php
  2. namespace App\Form\Type\Security;
  3. use App\Entity\Country;
  4. use App\Entity\UserGroup;
  5. use App\Form\Model\Security\RegisterModel;
  6. use Symfony\Bridge\Doctrine\Form\Type\EntityType;
  7. use Symfony\Component\Form\AbstractType;
  8. use Symfony\Component\Form\Extension\Core\Type\CheckboxType;
  9. use Symfony\Component\Form\Extension\Core\Type\ChoiceType;
  10. use Symfony\Component\Form\Extension\Core\Type\EmailType;
  11. use Symfony\Component\Form\Extension\Core\Type\HiddenType;
  12. use Symfony\Component\Form\Extension\Core\Type\PasswordType;
  13. use Symfony\Component\Form\FormBuilderInterface;
  14. use Symfony\Component\OptionsResolver\OptionsResolver;
  15. class RegisterType extends AbstractType
  16. {
  17.     const DOMAIN_COUNTRIES 'countries';
  18.     /**
  19.      * {@inheritdoc}
  20.      */
  21.     public function buildForm(FormBuilderInterface $builder, array $options)
  22.     {
  23.         $builder
  24.             ->add('firstname'null, [
  25.                 'required' => true,
  26.                 'label' => 'register.firstname.label',
  27.             ])
  28.             ->add('lastname'null, [
  29.                 'required' => true,
  30.                 'label' => 'register.lastname.label',
  31.             ])
  32.             ->add('email'EmailType::class, [
  33.                 'required' => true,
  34.                 'label' => 'register.address.label',
  35.                 'attr' => [
  36.                     'placeholder' => 'register.address.placeholder',
  37.                 ],
  38.             ])
  39.             ->add('emailConfirm'EmailType::class, [
  40.                 'required' => false,
  41.                 'attr' => [
  42.                     'placeholder' => 'register.emailConfirm.placeholder',
  43.                 ],
  44.             ])
  45.             ->add('country'EntityType::class, [
  46.                 'required' => true,
  47.                 'class' => Country::class,
  48.                 'label' => 'register.country.label',
  49.                 'choice_label' => 'name',
  50.                 'choice_value' => 'code',
  51.                 'choice_translation_domain' => self::DOMAIN_COUNTRIES,
  52.             ])
  53.             ->add('password'PasswordType::class, [
  54.                 'required' => true,
  55.                 'label' => 'register.password.label',
  56.                 'attr' => [
  57.                     'placeholder' => 'register.password.placeholder',
  58.                 ],
  59.             ])
  60.             ->add('passwordRepeat'PasswordType::class, [
  61.                 'required' => true,
  62.                 'label' => 'register.passwordRepeat.label',
  63.                 'attr' => [
  64.                     'placeholder' => 'register.passwordRepeat.placeholder',
  65.                 ],
  66.             ])
  67.             ->add('policy'CheckboxType::class, [
  68.                 'required' => true,
  69.                 'label' => 'register.policy.label',
  70.                 'translation_domain' => false,
  71.             ])
  72.             ->add('role'ChoiceType::class, [
  73.                 'label' => false,
  74.                 'required' => true,
  75.                 'expanded' => true,
  76.                 'multiple' => false,
  77.                 'choices' => [
  78.                     'parent' => UserGroup::ROLE_USER,
  79.                     'teacher' => UserGroup::ROLE_TEACHER,
  80.                 ],
  81.                 'label_attr' => [
  82.                     'class' => 'radio-inline radio-custom mx-3',
  83.                 ],
  84.             ]);
  85.     }
  86.     /**
  87.      * {@inheritdoc}
  88.      */
  89.     public function configureOptions(OptionsResolver $resolver)
  90.     {
  91.         $resolver->setDefaults([
  92.             'data_class' => RegisterModel::class,
  93.         ]);
  94.     }
  95. }