src/Form/RegistrationFormType.php line 19

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\EmailType;
  7. use Symfony\Component\Form\Extension\Core\Type\HiddenType;
  8. use Symfony\Component\Form\Extension\Core\Type\PasswordType;
  9. use Symfony\Component\Form\Extension\Core\Type\RepeatedType;
  10. use Symfony\Component\Form\Extension\Core\Type\TextType;
  11. use Symfony\Component\Form\FormBuilderInterface;
  12. use Symfony\Component\OptionsResolver\OptionsResolver;
  13. use Symfony\Component\Validator\Constraints\IsTrue;
  14. use Symfony\Component\Validator\Constraints\Length;
  15. use Symfony\Component\Validator\Constraints\NotBlank;
  16. class RegistrationFormType extends AbstractType
  17. {
  18.     public function buildForm(FormBuilderInterface $builder, array $options): void
  19.     {
  20.         $builder
  21.             ->add('username'EmailType::class, [
  22.                 'attr' => ['class' => 'form-control'],
  23.                 'label_attr' => ['class' => 'form-label'],
  24.                 'label' => "Email",
  25.                 'required' => true
  26.             ])
  27.             ->add('firstName'TextType::class, [
  28.                 'attr' => ['class' => 'form-control'],
  29.                 'label' => "Prénom",
  30.                 'label_attr' => ['class' => 'form-label'],
  31.                 'required' => false
  32.             ])
  33.             ->add('lastName'TextType::class, [
  34.                 'attr' => ['class' => 'form-control'],
  35.                 'label' => "Nom",
  36.                 'label_attr' => ['class' => 'form-label'],
  37.                 'required' => false
  38.             ])
  39.             ->add('address'TextType::class, [
  40.                 'attr' => ['class' => 'form-control'"autocomplete" => "off"],
  41.                 'label' => "Ville",
  42.                 'label_attr' => ['class' => 'form-label'],
  43.                 'required' => false
  44.             ])
  45.             ->add('birthday'TextType::class, [
  46.                 'attr' => ['class' => 'form-control'],
  47.                 'label' => "Birthday",
  48.                 'label_attr' => ['class' => 'form-label'],
  49.                 'required' => false
  50.             ])
  51.             ->add('city'TextType::class, [
  52.                 'attr' => ['class' => 'form-control'],
  53.                 'label' => "Ville",
  54.                 'label_attr' => ['class' => 'form-label'],
  55.                 'required' => false
  56.             ])
  57.             ->add('country'TextType::class, [
  58.                 'attr' => ['class' => 'form-control'],
  59.                 'label' => "Pays",
  60.                 'label_attr' => ['class' => 'form-label'],
  61.                 'required' => false
  62.             ])
  63.             ->add('subscribe'CheckboxType::class, [
  64.                 'attr' => ['class' => 'form-check-input'],
  65.                 'label_attr' => ['class' => 'form-label'],
  66.                 'label' => 'Voulez-vous recevoir des sujets de prières par mail',
  67.                 'required' => false
  68.             ])
  69.             ->add('latitude'HiddenType::class)
  70.             ->add('longitude'HiddenType::class)
  71. //            ->add('agreeTerms', CheckboxType::class, [
  72. //                'mapped' => false,
  73. //                'constraints' => [
  74. //                    new IsTrue([
  75. //                        'message' => 'You should agree to our terms.',
  76. //                    ]),
  77. //                ],
  78. //            ])
  79.             ->add('plainPassword'RepeatedType::class, [
  80.                 'type' => PasswordType::class,
  81.                 'required' => true,
  82.                 'mapped' => false,
  83.                 'invalid_message' => 'Mots de passe non identiques',
  84.                 'options' => ['attr' => [
  85.                     'class' => 'form-control mb-1',
  86.                     'placeholder' => '············',
  87.                 ]],
  88.                 'first_options' => [
  89.                     'label' => 'Mot de passe',
  90.                     'label_attr' => ['class' => 'form-label'],
  91.                 ],
  92.                 'second_options' => [
  93.                     'label' => 'Confirmation mot de passe',
  94.                     'label_attr' => ['class' => 'form-label'],
  95.                 ],
  96.                 'constraints' => [
  97.                     new NotBlank([
  98.                         'message' => 'Please enter a password',
  99.                     ]),
  100.                     new Length([
  101.                         'min' => 6,
  102.                         'minMessage' => 'Your password should be at least {{ limit }} characters',
  103.                         // max length allowed by Symfony for security reasons
  104.                         'max' => 4096,
  105.                     ]),
  106.                 ],
  107.             ]);
  108.     }
  109.     public function configureOptions(OptionsResolver $resolver): void
  110.     {
  111.         $resolver->setDefaults([
  112.             'data_class' => User::class,
  113.         ]);
  114.     }
  115. }