src/Infrastructure/SecurityBundle/Form/Type/SignupType.php line 30

Open in your IDE?
  1. <?php
  2. namespace Whater\Infrastructure\SecurityBundle\Form\Type;
  3. use Doctrine\ORM\EntityRepository;
  4. use Whater\Infrastructure\SecurityBundle\Form\DTO\SignupDTO;
  5. use EWZ\Bundle\RecaptchaBundle\Form\Type\EWZRecaptchaType;
  6. use Symfony\Bridge\Doctrine\Form\Type\EntityType;
  7. use Symfony\Component\Form\AbstractType;
  8. use Symfony\Component\Form\FormBuilderInterface;
  9. use Symfony\Component\OptionsResolver\OptionsResolver;
  10. use Symfony\Component\Form\Extension\Core\Type\TextType;
  11. use Symfony\Component\Form\Extension\Core\Type\PasswordType;
  12. use Symfony\Component\Form\Extension\Core\Type\CheckboxType;
  13. use Symfony\Component\Form\Extension\Core\Type\ChoiceType;
  14. use Symfony\Component\Form\Extension\Core\Type\HiddenType;
  15. use Symfony\Component\Validator\Constraints as Assert;
  16. use Symfony\Component\Form\Extension\Core\Type\EmailType;
  17. use Symfony\Component\Form\Extension\Core\Type\FileType;
  18. use Symfony\Component\Form\Extension\Core\Type\TextareaType;
  19. use Symfony\Component\Validator\Constraints\File;
  20. use Whater\Domain\Zones\Model\Town;
  21. use Whater\Infrastructure\CommonBundle\Form\Type\EntityHiddenType;
  22. /**
  23. * Class SignupType
  24. *
  25. * @package Whater\Infrastructure\SecurityBundle\Form\Type
  26. */
  27. class SignupType extends AbstractType
  28. {
  29. /**
  30. * @param FormBuilderInterface $builder
  31. * @param array $options
  32. */
  33. public function buildForm(FormBuilderInterface $builder, array $options)
  34. {
  35. $builder
  36. ->add('email', EmailType::class, [
  37. 'label' => 'web.security.signup.fields.email',
  38. 'attr' => [
  39. 'placeholder' => 'web.security.signup.fields.email',
  40. 'autocomplete' => 'null'
  41. ],
  42. 'required' => true,
  43. 'constraints' => array(
  44. new Assert\NotBlank(),
  45. )
  46. ])
  47. ->add('firstName', TextType::class, [
  48. 'required' => true,
  49. 'label' => 'web.security.signup.fields.first_name',
  50. 'attr' => [
  51. 'placeholder' => 'web.security.signup.fields.first_name'
  52. ],
  53. 'constraints' => array(
  54. new Assert\NotBlank(),
  55. )
  56. ])
  57. ->add('lastName', TextType::class, [
  58. 'label' => 'web.security.signup.fields.last_name',
  59. 'attr' => [
  60. 'placeholder' => 'web.security.signup.fields.last_name'
  61. ],
  62. 'required' => false
  63. ])
  64. ->add('phone', TextType::class, [
  65. 'label' => 'web.security.signup.fields.phone',
  66. 'attr' => [
  67. 'placeholder' => 'web.security.signup.fields.phone'
  68. ],
  69. 'required' => false
  70. ])
  71. ->add('password', PasswordType::class, [
  72. 'label' => 'web.security.signup.fields.password',
  73. 'attr' => [
  74. 'placeholder' => 'web.security.signup.fields.password',
  75. 'autocomplete' => 'null',
  76. ],
  77. 'constraints' => [
  78. new Assert\Length([
  79. 'min' => 8
  80. ])
  81. ],
  82. 'required' => true
  83. ])
  84. ->add('terms', CheckboxType::class, [
  85. 'mapped' => false,
  86. 'required' => true
  87. ])
  88. ->add('town', EntityHiddenType::class, [
  89. 'label' => 'admin.user.edit.fields.town',
  90. 'class' => Town::class,
  91. 'required' => true,
  92. 'data' => $options['town']
  93. ])
  94. ->add('publicComments', TextareaType::class, [
  95. 'label' => 'web.security.signup.fields.public_comments',
  96. 'attr' => ['placeholder' => 'web.security.signup.fields.public_comments'],
  97. 'required' => false
  98. ])
  99. ->add('selectedTypes', ChoiceType::class, [
  100. 'label' => '¿Qué tipo de usuario eres?',
  101. 'attr' => ['class' => 'type-users'],
  102. 'data' => [true, false, false, false, false],
  103. 'choices' => [
  104. 'web.security.signup.type_of_user.type1' => 1,
  105. 'web.security.signup.type_of_user.type2' => 2,
  106. 'web.security.signup.type_of_user.type3' => 3,
  107. 'web.security.signup.type_of_user.type4' => 4,
  108. 'web.security.signup.type_of_user.type5' => 5,
  109. ],
  110. 'expanded' => true,
  111. 'multiple' => true
  112. ])
  113. ->add('recaptcha', EWZRecaptchaType::class, [
  114. 'attr' => array(
  115. 'options' => array(
  116. 'theme' => 'light',
  117. 'type' => 'image',
  118. 'size' => 'normal'
  119. )
  120. ),
  121. 'mapped' => false
  122. ])
  123. ->add('referralCode', HiddenType::class, [
  124. 'required' => false,
  125. ]);
  126. }
  127. /**
  128. * @param OptionsResolver $resolver
  129. */
  130. public function configureOptions(OptionsResolver $resolver)
  131. {
  132. $resolver->setDefaults([
  133. 'data_class' => SignupDTO::class,
  134. 'csrf_protection' => false,
  135. 'town' => null
  136. ]);
  137. }
  138. }