src/Form/Type/RegistrationType.php line 22

Open in your IDE?
  1. <?php
  2. namespace App\Form\Type;
  3. use App\Validator\CustomerEmail;
  4. use App\Validator\DateNotGreaterThanToday;
  5. use Carbon\Carbon;
  6. use CoreShop\Bundle\CoreBundle\Form\Type\UserRegistrationType;
  7. use Symfony\Component\Form\AbstractType;
  8. use Symfony\Component\Form\CallbackTransformer;
  9. use Symfony\Component\Form\Extension\Core\Type\BirthdayType;
  10. use Symfony\Component\Form\Extension\Core\Type\CheckboxType;
  11. use Symfony\Component\Form\Extension\Core\Type\EmailType;
  12. use Symfony\Component\Form\Extension\Core\Type\SubmitType;
  13. use Symfony\Component\Form\Extension\Core\Type\TextType;
  14. use Symfony\Component\Form\FormBuilderInterface;
  15. use Symfony\Component\OptionsResolver\OptionsResolver;
  16. use Symfony\Component\Validator\Constraints\NotBlank;
  17. use Symfony\Component\Validator\Constraints\Email;
  18. use Symfony\Component\Validator\Constraints\Valid;
  19. class RegistrationType extends AbstractType
  20. {
  21.     public function buildForm(FormBuilderInterface $builder, array $options)
  22.     {
  23.         $builder
  24.             ->add('lastname'TextType::class, [
  25.                 'label' => 'coreshop.form.customer.lastname',
  26.                 'constraints' => [
  27.                     new NotBlank([
  28.                         'message' => 'A vezetéknév nem lehet üres'
  29.                     ])
  30.                 ]
  31.             ])
  32.             ->add('firstname'TextType::class, [
  33.                 'label' => 'coreshop.form.customer.firstname',
  34.                 'constraints' => [
  35.                     new NotBlank([
  36.                         'message' => 'A keresztnév nem lehet üres'
  37.                     ])
  38.                 ]
  39.             ])
  40.             ->add('email'EmailType::class, [
  41.                 'label' => 'coreshop.form.customer.email',
  42.                 'constraints' => [
  43.                     new NotBlank([
  44.                         'message' => 'Az e-mail cím nem lehet üres'
  45.                     ]),
  46.                     new Email([
  47.                         'message' => 'Érvénytelen e-mail cím'
  48.                     ]),
  49.                     new CustomerEmail()
  50.                 ]
  51.             ])
  52.             ->add('user'UserRegistrationType::class, [
  53.                 'label' => false,
  54.                 'constraints' => [new Valid(['groups' => ['coreshop']])],
  55.                 'allow_username' => false,
  56.                 'required' => true,
  57.             ])
  58.             ->add('birthDate'BirthdayType::class, [
  59.                 'label' => 'Születési dátum',
  60.                 'widget' => 'single_text',
  61.                 'attr' => [
  62.                     'min' => '1900-01-01',
  63.                     'max' => (new Carbon())->format('Y-m-d')
  64.                 ],
  65.                 'constraints' => [
  66.                     new DateNotGreaterThanToday(['message' => 'A dátum nem lehet nagyobb, mint a mai nap'])
  67.                 ],
  68.             ])
  69.             ->add('newsletterActive'CheckboxType::class, [
  70.                 'label' => 'coreshop.form.customer.newsletter.subscribe',
  71.                 'required' => false,
  72.             ])
  73.             ->add('submit'SubmitType::class);
  74.         $builder->get('birthDate')
  75.             ->addModelTransformer(new CallbackTransformer(
  76.                 function($value) {
  77.                     if (empty($value)) {
  78.                         return null;
  79.                     }
  80.                     return new Carbon($value);
  81.                 },
  82.                 function($value) {
  83.                     if (empty($value)) {
  84.                         return null;
  85.                     }
  86.                     return  new Carbon($value);
  87.                 }
  88.             ));
  89.     }
  90.     public function getBlockPrefix(): string
  91.     {
  92.         return 'coreshop_customer_registration';
  93.     }
  94.     public function configureOptions(OptionsResolver $resolver): void
  95.     {
  96.         parent::configureOptions($resolver);
  97.         $resolver->setDefaults([
  98.             'csrf_protection' => true,
  99.             'allow_extra_fields' => false,
  100.         ]);
  101.     }
  102. }