src/Form/RegistrationType.php line 19

Open in your IDE?
  1. <?php
  2. namespace App\Form;
  3. use App\Entity\Gender;
  4. use App\Entity\User;
  5. use Symfony\Bridge\Doctrine\Form\Type\EntityType;
  6. use Symfony\Component\Form\AbstractType;
  7. use Symfony\Component\Form\Extension\Core\Type\CheckboxType;
  8. use Symfony\Component\Form\Extension\Core\Type\ChoiceType;
  9. use Symfony\Component\Form\Extension\Core\Type\EmailType;
  10. use Symfony\Component\Form\Extension\Core\Type\PasswordType;
  11. use Symfony\Component\Form\Extension\Core\Type\RepeatedType;
  12. use Symfony\Component\Form\Extension\Core\Type\TextType;
  13. use Symfony\Component\Form\FormBuilderInterface;
  14. use Symfony\Component\OptionsResolver\OptionsResolver;
  15. use Symfony\Component\Validator\Constraints\IsTrue;
  16. class RegistrationType extends AbstractType
  17. {
  18.     public function buildForm(FormBuilderInterface $builder, array $options)
  19.     {
  20.         $builder
  21.             ->add('gender'EntityType::class, [
  22.                 'class'       => Gender::class,
  23.                 'label'       => 'Genre',
  24.                 'placeholder' => '-- Genre --',
  25.             ])
  26.             ->add('language'ChoiceType::class, [
  27.                 'label'       => 'Langue',
  28.                 'placeholder' => '-- En quelle langue souhaitez-vous recevoir les emails ? --',
  29.                 'choices'     => [
  30.                     'Français' => 'french',
  31.                     'English'  => 'english',
  32.                 ],
  33.             ])
  34.             ->add(
  35.                 'firstname',
  36.                 TextType::class,
  37.                 [
  38.                     'label' => 'Prénom',
  39.                 ]
  40.             )
  41.             ->add(
  42.                 'lastname',
  43.                 TextType::class,
  44.                 [
  45.                     'label' => 'Nom',
  46.                 ]
  47.             )
  48.             ->add(
  49.                 'email',
  50.                 EmailType::class,
  51.                 [
  52.                     'label' => 'Email',
  53.                 ]
  54.             )
  55.             ->add('password'RepeatedType::class, array(
  56.                 'type'            => PasswordType::class,
  57.                 'invalid_message' => 'Les mots de passe doivent correspondre',
  58.                 'options'         => array('attr' => array('class' => 'password-field')),
  59.                 'first_options'   => [ //propriété du premier input
  60.                     'label' => 'Mot de passe',
  61.                     'attr'  => [
  62.                         'placeholder' => 'Choisissez un mot de passe',
  63.                     ],
  64.                 ],
  65.                 'second_options'  => [ //propriété du deuxieme input
  66.                     'label' => 'Confirmation du mot de passe',
  67.                     'attr'  => [
  68.                         'placeholder' => 'Retapez votre mot de passe',
  69.                     ],
  70.                 ],
  71.             ))
  72.             ->add('agreedTerms'CheckboxType::class, [
  73.                 'label'       => 'Je déclare avoir lu et être en accord avec  les conditions générales de vente et le règlement intérieur',
  74.                 'mapped'      => false,
  75.                 'constraints' => [
  76.                     new IsTrue([
  77.                                    'message' => 'Vous devez lire et accepter nos conditions générales avant de vous inscrire',
  78.                                ]),
  79.                 ],
  80.             ])
  81.             ->add(
  82.                 'referer',
  83.                 TextType::class,
  84.                 [
  85.                     'required' => false,
  86.                     'label'    => false,
  87.                     'attr'     => ['style' => 'display:none'],
  88.                     'mapped'   => false,
  89.                 ]
  90.             );
  91.         $builder->get('referer')->setData($options['referer']);
  92.     }
  93.     public function configureOptions(OptionsResolver $resolver)
  94.     {
  95.         $resolver->setDefaults(
  96.             [
  97.                 'data_class' => User::class,
  98.                 'referer' => ''
  99.             ]
  100.         );
  101.     }
  102. }