src/Form/SocietyRegisterFormType.php line 23

Open in your IDE?
  1. <?php
  2. namespace App\Form;
  3. use App\Entity\User;
  4. use App\Validator\MailCustom;
  5. use App\Validator\Password;
  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\Extension\Core\Type\NumberType;
  14. use Symfony\Component\Form\FormBuilderInterface;
  15. use Symfony\Component\OptionsResolver\OptionsResolver;
  16. use Symfony\Component\Validator\Constraints\Email;
  17. use Symfony\Component\Validator\Constraints\IsTrue;
  18. use Symfony\Component\Validator\Constraints\Length;
  19. use Symfony\Component\Validator\Constraints\NotBlank;
  20. class SocietyRegisterFormType extends AbstractType
  21. {
  22.     public function buildForm(FormBuilderInterface $builder, array $options): void
  23.     {
  24.         $builder
  25.             ->add('lastname'TextType::class, [
  26.                 'attr' => [
  27.                     'class' => 'style-72',
  28.                     'id' => 'lastname-register',
  29.                     'maxlength' => 50,
  30.                 ],
  31.                 'constraints' => [
  32.                     new NotBlank([
  33.                         'message' => 'Veuillez saisir votre nom de famille'
  34.                     ]),
  35.                 ]
  36.             ])
  37.             ->add('name'TextType::class, [
  38.                 'attr' => [
  39.                     'class' => 'style-61',
  40.                     'maxlength' => 150,
  41.                 ],
  42.                 'mapped' => false,
  43.                 'required' => true,
  44.                 'constraints' => [
  45.                     new NotBlank([
  46.                         'message' => 'Veuillez saisir le nom commercial de l\'entreprise'
  47.                     ]),
  48.                 ]
  49.             ])
  50.             ->add('nb_mission'NumberType::class, [
  51.                 'attr' => [
  52.                     'class' => 'style-61',
  53.                     'maxlength' => 150// Note que maxlength n'a pas d'impact sur un champ de type number
  54.                 ],
  55.                 'mapped' => false,
  56.                 'required' => true,
  57.                 'constraints' => [
  58.                     new NotBlank([
  59.                         'message' => 'Veuillez répondre combien de mission souhaitez vous poster'
  60.                     ]),
  61.                 ]
  62.             ])
  63.             ->add('post_intercontrat'TextType::class, [
  64.                 'attr' => [
  65.                     'class' => 'style-61',
  66.                     'maxlength' => 250,
  67.                 ],
  68.                 'mapped' => false,
  69.                 'required' => true,
  70.                 'constraints' => [
  71.                     new NotBlank([
  72.                         'message' => 'Veuillez répondre si vous souhaitez poster vos intercontrats'
  73.                     ]),
  74.                 ]
  75.             ])
  76.             ->add('typeSociete'ChoiceType::class, [
  77.                 'required' => true,
  78.                 'attr' => [
  79.                     'class' => 'style-61',
  80.                     'title' => 'Type de structure'
  81.                 ],
  82.                 "placeholder" => "Type de structure",
  83.                 'choices' => [
  84.                     'ESN/SSII' => 'ESN/SSII',
  85.                     'Cabinet de conseil' => 'Cabinet de conseil',
  86.                     'Cabinet de recrutement ' => 'Cabinet de recrutement ',
  87.                     'Start-up' => 'Start-up',
  88.                     'Editeur de logiciel' => 'Editeur de logiciel',
  89.                     'Sourcing' => 'Sourcing',
  90.                     'Agence web' => 'Agence web',
  91.                     'Client final/DSI ' => 'Client final/DSI ',
  92.                     'Indépendant' => 'Indépendant',
  93.                     'Société de portage' => 'Société de portage',
  94.                     'Centre de formation' => 'Centre de formation',
  95.                 ],
  96.                 'expanded' => false,
  97.                 'mapped' => false,
  98.                 'constraints' => [
  99.                     new NotBlank([
  100.                         'message' => 'Veuillez choisir le type de structure'
  101.                     ]),
  102.                 ]
  103.             ])
  104.             ->add('post_intercontrat'ChoiceType::class, [
  105.                 'required' => true,
  106.                 'attr' => [
  107.                     'class' => 'style-61',
  108.                     'title' => 'Type de structure'
  109.                 ],
  110.                 "placeholder" => "Choisir",
  111.                 'choices' => [
  112.                     'Oui' => 'Oui',
  113.                     'Non' => 'Non',
  114.                     'Je n\'ai pas de consultant salarié' => 'Je n’ai pas de consultant salarié',
  115.                 ],
  116.                 'expanded' => false,
  117.                 'mapped' => false,
  118.                 'constraints' => [
  119.                     new NotBlank([
  120.                         'message' => 'Veuillez choisir si vous souhaitez poster vous intercontrats'
  121.                     ]),
  122.                 ]
  123.             ])
  124.             ->add('phone'TextType::class, [
  125.                 'attr' => [
  126.                     'class' => 'style-77 only_phone_number',
  127.                 ],
  128.                 "required" => true,
  129.                 'constraints' => [
  130.                     new NotBlank([
  131.                         'message' => 'Veuillez saisir le numéro de téléphone'
  132.                     ])
  133.                 ],
  134.                 'mapped' => false,
  135.             ])
  136.             ->add('email'EmailType::class, [
  137.                 'attr' => [
  138.                     'class' => 'style-61',
  139.                     'id' => 'emailaddress-register',
  140.                 ],
  141.                 'required' => true,
  142.                 'constraints' => [
  143.                     new NotBlank([
  144.                         'message' => 'Veuillez saisir votre adresse email'
  145.                     ]),
  146.                     new Email([
  147.                         'message' => 'Veuillez saisir une adresse email valide'
  148.                     ])
  149.                 ]
  150.             ])
  151.             ->add('plainPassword'PasswordType::class, [
  152.                 // instead of being set onto the object directly,
  153.                 // this is read and encoded in the controller
  154.                 'required' => true,
  155.                 'mapped' => false,
  156.                 // 'first_options' => [
  157.                 //     'attr' => [
  158.                 //         'autocomplete' => 'new-password',
  159.                 //         'class' => 'style-61',
  160.                 //         'id' => 'password-register',
  161.                 //     ]],
  162.                 // 'second_options' => [
  163.                 //     'attr' => [
  164.                 //         'autocomplete' => 'new-password',
  165.                 //         'class' => 'style-61',
  166.                 //         'id' => 'password-repeat-registerr',
  167.                 //     ]],
  168.                 // 'constraints' => [
  169.                 //     new Password()
  170.                 // ],
  171.                 // 'invalid_message' => ' Les mots de passes ne sont pas identiques'
  172.             ])
  173.             ->add('accepted',CheckboxType::class, [
  174.                 'mapped' =>false,
  175.                 'required' => false,
  176.                 'constraints' => [
  177.                     new IsTrue([
  178.                         'message' =>'Vous devez accepter pour pouvoir vous inscrire'
  179.                     ]),
  180.                 ]
  181.             ])
  182.             // ->add('newsletterAccept',CheckboxType::class, [
  183.             //     'mapped' =>false,
  184.             //     'required' => false,
  185.             //     'constraints' => [
  186.             //         new IsTrue([
  187.             //             'message' =>'Vous devez accepter pour pouvoir vous inscrire'
  188.             //         ]),
  189.             //     ]
  190.             // ])
  191.             ->add('civility'ChoiceType::class, [
  192.                 'choices' => [
  193.                     'Mr.' => 1,
  194.                     'Mme' => 2,
  195.                 ],
  196.                 "placeholder" => "Civilité",
  197.                 'attr' => [
  198.                     'class' => 'style-67',
  199.                 ],
  200.                 'multiple' => false,
  201.                 'required' => true,
  202.                 'constraints' => [
  203.                     new NotBlank([
  204.                         'message' => 'Veuillez saisir votre civilité'
  205.                     ]),
  206.                 ]
  207.             ])
  208.             ->add('firstname'TextType::class, [
  209.                 'attr' => [
  210.                     'class' => 'style-61',
  211.                     'id' => 'firstname-register',
  212.                     'maxlength' => 50,
  213.                 ],
  214.                 'constraints' => [
  215.                     new NotBlank([
  216.                         'message' => 'Veuillez saisir votre prénom'
  217.                     ]),
  218.                 ]
  219.             ])
  220.             ->add('jobSociety'TextType::class, [
  221.                 'attr' => [
  222.                     'class' => 'style-61',
  223.                     'maxlength' => 50,
  224.                 ],
  225.                 'required' => true,
  226.                 'constraints' => [
  227.                     new NotBlank([
  228.                         'message' => 'Veuillez saisir l\'intitulé de votre poste dans l\'entreprise'
  229.                     ]),
  230.                 ]
  231.             ])
  232.         ;
  233.     }
  234.     public function configureOptions(OptionsResolver $resolver): void
  235.     {
  236.         $resolver->setDefaults([
  237.             'data_class' => User::class,
  238.         ]);
  239.     }
  240. }