<?php
namespace App\Form;
use App\Entity\Client;
use App\Validator\UniqueEmail;
use Symfony\Component\Form\AbstractType;
use Symfony\Component\Form\Extension\Core\Type\EmailType;
use Symfony\Component\Form\Extension\Core\Type\PasswordType;
use Symfony\Component\Form\Extension\Core\Type\CheckboxType;
use Symfony\Component\Form\Extension\Core\Type\ChoiceType;
use Symfony\Component\Form\Extension\Core\Type\TextType;
use Symfony\Component\Form\FormBuilderInterface;
use Symfony\Component\OptionsResolver\OptionsResolver;
use Symfony\Component\Validator\Constraints\NotBlank;
use Symfony\Component\Form\Extension\Core\Type\HiddenType;
class ClientType extends AbstractType
{
public function buildForm(FormBuilderInterface $builder, array $options): void
{
$builder
->add('nom', TextType::class, ['label' => false, 'attr' => ['placeholder' => 'Nom *']])
->add('prenom', TextType::class, ['label' => false, 'attr' => ['placeholder' => 'Prénom *']])
// ->add('name', TextType::class, ['label' => 'Nom', 'attr' => ['class' => '']])
// ->add('civ', TextType::class, ['label' => false])
->add('cp', TextType::class, [
'label' => false,
'attr' => [
'placeholder' => 'Code postal *',
'inputmode' => 'numeric',
'pattern' => '[0-9]*'
]
])
->add('telephone', TextType::class, [
'label' => false,
'attr' => [
'placeholder' => 'Téléphone *',
'inputmode' => 'tel',
'pattern' => '[0-9+ ]*'
]
])
->add('adresse1', TextType::class, ['label' => false, 'attr' => ['placeholder' => 'Adresse 1 *']])
->add('adresse2', TextType::class, ['label' => false, 'attr' => ['placeholder' => 'Adresse 2'], 'required' => false])
->add('ville', TextType::class, ['label' => false, 'attr' => ['placeholder' => 'Ville *']])
// ->add('region', TextType::class, ['label' => false, 'attr' => ['placeholder' => 'Région *']])
// ->add('pays', TextType::class, ['label' => false, 'attr' => ['placeholder' => 'Pays *']])
->add('raison_social', TextType::class, ['label' => false, 'attr' => ['placeholder' => 'Raison sociale'], 'required' => false])
//->add('recevoir_offre', CheckboxType::class, ['label' => "Je souhaite recevoir les offres et communications Panda coworking", 'required' => false, 'label_attr' => ['class' => 'hide']])
->add('email', EmailType::class,
[
'label' => false,
'attr' => ['placeholder' => 'Email *'],
'constraints' => [
new NotBlank([
'message' => 'Veuillez saisir une adresse email.',
]),
new UniqueEmail(), // Ajout de la contrainte personnalisée
],
]
)
->add('password', PasswordType::class, ['label' => false, 'attr' => ['placeholder' => 'Mot de passe *']])
->add('confirm_password', PasswordType::class,
[
'label' => false,
'attr' => ['placeholder' => 'Confirmation de mot de passe *'],
'mapped' => false
]
)
->add('civ', ChoiceType::class, [
'choices' => [
'Monsieur' => 'mr',
'Madame' => 'mme',
],
'expanded' => true, // Affiche les choix sous forme de boutons radio
'multiple' => false, // Un seul choix possible
'label' => false,
])
->add('recaptcha_token', HiddenType::class, [
'mapped' => false, // ce n’est pas un champ de l’entité
]);
}
public function configureOptions(OptionsResolver $resolver): void
{
$resolver->setDefaults([
'data_class' => Client::class,
]);
}
}