src/Form/ClientType.php line 17

Open in your IDE?
  1. <?php
  2. namespace App\Form;
  3. use App\Entity\Client;
  4. use App\Validator\UniqueEmail;
  5. use Symfony\Component\Form\AbstractType;
  6. use Symfony\Component\Form\Extension\Core\Type\EmailType;
  7. use Symfony\Component\Form\Extension\Core\Type\PasswordType;
  8. use Symfony\Component\Form\Extension\Core\Type\CheckboxType;
  9. use Symfony\Component\Form\Extension\Core\Type\ChoiceType;
  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\NotBlank;
  14. use Symfony\Component\Form\Extension\Core\Type\HiddenType;
  15. class ClientType extends AbstractType
  16. {
  17.     public function buildForm(FormBuilderInterface $builder, array $options): void
  18.     {
  19.         $builder
  20.             ->add('nom'TextType::class, ['label' => false'attr' => ['placeholder' => 'Nom *']])
  21.             ->add('prenom'TextType::class, ['label' => false'attr' => ['placeholder' => 'Prénom *']])
  22.             // ->add('name', TextType::class, ['label' => 'Nom', 'attr' => ['class' => '']])
  23.             // ->add('civ', TextType::class, ['label' => false])
  24.             ->add('cp'TextType::class, [
  25.                 'label' => false,
  26.                 'attr' => [
  27.                     'placeholder' => 'Code postal *',
  28.                     'inputmode' => 'numeric',
  29.                     'pattern' => '[0-9]*'
  30.                 ]
  31.             ])
  32.             ->add('telephone'TextType::class, [
  33.                 'label' => false,
  34.                 'attr' => [
  35.                     'placeholder' => 'Téléphone *',
  36.                     'inputmode' => 'tel',
  37.                     'pattern' => '[0-9+ ]*'
  38.                 ]
  39.             ])
  40.             ->add('adresse1'TextType::class, ['label' => false'attr' => ['placeholder' => 'Adresse 1 *']])
  41.             ->add('adresse2'TextType::class, ['label' => false'attr' => ['placeholder' => 'Adresse 2'], 'required' => false])
  42.             ->add('ville'TextType::class, ['label' => false'attr' => ['placeholder' => 'Ville *']])
  43.             // ->add('region', TextType::class, ['label' => false, 'attr' => ['placeholder' => 'Région *']])
  44.             // ->add('pays', TextType::class, ['label' => false, 'attr' => ['placeholder' => 'Pays *']])
  45.             ->add('raison_social'TextType::class, ['label' => false'attr' => ['placeholder' => 'Raison sociale'], 'required' => false])
  46.             //->add('recevoir_offre', CheckboxType::class, ['label' => "Je souhaite recevoir les offres et communications Panda coworking", 'required' => false, 'label_attr' => ['class' => 'hide']])
  47.             ->add('email'EmailType::class,
  48.                 [
  49.                     'label' => false,
  50.                     'attr' => ['placeholder' => 'Email *'],
  51.                     'constraints' => [
  52.                         new NotBlank([
  53.                             'message' => 'Veuillez saisir une adresse email.',
  54.                         ]),
  55.                         new UniqueEmail(), // Ajout de la contrainte personnalisée
  56.                     ],
  57.                 ]
  58.             )
  59.             ->add('password'PasswordType::class, ['label' => false'attr' => ['placeholder' => 'Mot de passe *']])
  60.             ->add('confirm_password',  PasswordType::class, 
  61.                 [
  62.                     'label' => false
  63.                     'attr' => ['placeholder' => 'Confirmation de mot de passe *'],
  64.                     'mapped' => false
  65.                 ]
  66.             )
  67.             ->add('civ'ChoiceType::class, [
  68.                 'choices' => [
  69.                     'Monsieur' => 'mr',
  70.                     'Madame' => 'mme',
  71.                 ],
  72.                 'expanded' => true// Affiche les choix sous forme de boutons radio
  73.                 'multiple' => false// Un seul choix possible
  74.                 'label' => false,
  75.             ])
  76.             ->add('recaptcha_token'HiddenType::class, [
  77.                 'mapped' => false// ce n’est pas un champ de l’entité
  78.             ]);
  79.     }
  80.     public function configureOptions(OptionsResolver $resolver): void
  81.     {
  82.         $resolver->setDefaults([
  83.             'data_class' => Client::class,
  84.         ]);
  85.     }
  86. }