src/Czech/Form/Type/RegisterType.php line 25

Open in your IDE?
  1. <?php
  2. namespace Czech\Form\Type;
  3. use Czech\Model\RegisterModel;
  4. use Czech\Validator\Client\ClientBusinessIDUnique;
  5. use Czech\Validator\Client\ClientTaxIDUnique;
  6. use Czech\Validator\Password\PasswordMatch;
  7. use Czech\Validator\User\UserEmailUnique;
  8. use Karser\Recaptcha3Bundle\Form\Recaptcha3Type;
  9. use Karser\Recaptcha3Bundle\Validator\Constraints\Recaptcha3;
  10. use Symfony\Component\Form\AbstractType;
  11. use Symfony\Component\Form\Extension\Core\Type\CheckboxType;
  12. use Symfony\Component\Form\Extension\Core\Type\ChoiceType;
  13. use Symfony\Component\Form\Extension\Core\Type\EmailType;
  14. use Symfony\Component\Form\Extension\Core\Type\PasswordType;
  15. use Symfony\Component\Form\Extension\Core\Type\TextType;
  16. use Symfony\Component\Form\FormBuilderInterface;
  17. use Symfony\Component\OptionsResolver\OptionsResolver;
  18. use Symfony\Component\Validator\Constraints\IsTrue;
  19. use Symfony\Component\Validator\Constraints\Length;
  20. use Symfony\Component\Validator\Constraints\NotBlank;
  21. use Symfony\Component\Validator\Constraints\NotNull;
  22. class RegisterType extends AbstractType
  23. {
  24.     public function buildForm(FormBuilderInterface $builder, array $options)
  25.     {
  26.         $builder
  27.             ->add('firstName'TextType::class, [
  28.                 'required' => false,
  29.                 'attr' => [
  30.                     'placeholder' => 'ui.firstName',
  31.                     'class' => 'intro-x login__input form-control py-3 px-4 block'
  32.                 ],
  33.                 'constraints' => [new NotBlank()],
  34.                 'label' => false
  35.             ])
  36.             ->add('lastName'TextType::class, [
  37.                 'required' => false,
  38.                 'attr' => [
  39.                     'placeholder' => 'ui.lastName',
  40.                     'class' => 'intro-x login__input form-control py-3 px-4 block mt-4'
  41.                 ],
  42.                 'constraints' => [new NotBlank()],
  43.                 'label' => false
  44.             ])
  45.             ->add('email'EmailType::class, [
  46.                 'required' => false,
  47.                 'attr' => [
  48.                     'placeholder' => 'ui.email',
  49.                     'class' => 'intro-x login__input form-control py-3 px-4 block mt-4'
  50.                 ],
  51.                 'constraints' => [new NotBlank(), new UserEmailUnique()],
  52.                 'label' => false
  53.             ])
  54.             ->add('password'PasswordType::class, [
  55.                 'required' => false,
  56.                 'attr' => [
  57.                     'placeholder' => 'ui.password',
  58.                     'class' => 'intro-x login__input form-control py-3 px-4 block mt-4'
  59.                 ],
  60.                 'constraints' => [new NotBlank(), new Length(['min' => 8])],
  61.                 'label' => false
  62.             ])
  63.             ->add('repeatPassword'PasswordType::class, [
  64.                 'required' => false,
  65.                 'attr' => [
  66.                     'placeholder' => 'ui.repeatPassword',
  67.                     'class' => 'intro-x login__input form-control py-3 px-4 block mt-4'
  68.                 ],
  69.                 'constraints' => [new NotBlank(), new Length(['min' => 8]), new PasswordMatch()],
  70.                 'label' => false
  71.             ])
  72.             ->add('companyName'TextType::class, [
  73.                 'required' => false,
  74.                 'attr' => [
  75.                     'placeholder' => 'ui.registerCompanyName',
  76.                     'class' => 'intro-x login__input form-control py-3 px-4 block mt-4'
  77.                 ],
  78.                 'constraints' => [new NotBlank()],
  79.                 'label' => false
  80.             ])
  81.             ->add('businessID'TextType::class, [
  82.                 'required' => false,
  83.                 'attr' => [
  84.                     'placeholder' => 'ui.businessID',
  85.                     'class' => 'intro-x login__input form-control py-3 px-4 block mt-4'
  86.                 ],
  87.                 'constraints' => [new NotBlank(), new Length(['min' => 6]), new ClientBusinessIDUnique()],
  88.                 'label' => false
  89.             ])
  90.             ->add('taxID'TextType::class, [
  91.                 'required' => false,
  92.                 'attr' => [
  93.                     'placeholder' => 'ui.taxID',
  94.                     'class' => 'intro-x login__input form-control py-3 px-4 block mt-4'
  95.                 ],
  96.                 'constraints' => [new NotBlank(), new Length(['min' => 8]), new ClientTaxIDUnique()],
  97.                 'label' => false
  98.             ])
  99.             ->add('vatPayerSelect'ChoiceType::class, [
  100.                 'choices' => [
  101.                     'ui.vatPayerSelectValueYes' => 1,
  102.                     'ui.vatPayerSelectValueNo' => 0,
  103.                 ],
  104.                 'required' => false,
  105.                 'placeholder' => 'ui.vatPayerSelect',
  106.                 'attr' => [
  107.                     'style' => 'color: #ADB9C8',
  108.                     'class' => 'intro-x login__input form-control py-3 px-4 block mt-4'
  109.                 ],
  110.                 'constraints' => [new NotBlank()],
  111.                 'label' => false
  112.             ])
  113.             ->add('type'TextType::class, [
  114.                 'required' => false,
  115.                 'attr' => [
  116.                     'placeholder' => 'ui.type',
  117.                     'class' => 'intro-x login__input form-control py-3 px-4 block mt-4'
  118.                 ],
  119.                 'constraints' => [new NotBlank()],
  120.                 'label' => false
  121.             ])
  122.             ->add('agree'CheckboxType::class, [
  123.                 'required' => false,
  124.                 'attr' => [
  125.                     'class' => 'form-check-input border mr-2'
  126.                 ],
  127.                 'constraints' => [new IsTrue(['message' => 'client.business_conditions'])],
  128.                 'label' => false
  129.             ])
  130.             ->add('captcha'Recaptcha3Type::class, [
  131.                 'constraints' => new Recaptcha3(),
  132.                 'action_name' => 'register',
  133.                 'locale' => 'cz',
  134.             ]);
  135.     }
  136.     public function configureOptions(OptionsResolver $resolver)
  137.     {
  138.         $resolver->setDefault('data_class'RegisterModel::class);
  139.     }
  140. }