<?php
namespace App\Form\Contact;
use App\Entity\Clients\HistoriqueClient;
use App\Entity\Clients\Client;
use App\Entity\Traductions\Langue;
use Doctrine\ORM\EntityManagerInterface;
use Symfony\Bridge\Doctrine\Form\Type\EntityType;
use Symfony\Component\Form\AbstractType;
use Symfony\Component\Form\ChoiceList\ChoiceList;
use Symfony\Component\Form\FormBuilderInterface;
use Symfony\Component\Form\Extension\Core\Type\TextType;
use Symfony\Component\Validator\Constraints\NotBlank;
use Symfony\Component\Form\Extension\Core\Type\ChoiceType;
use Symfony\Component\Form\Extension\Core\Type\TextareaType;
use Symfony\Component\Validator\Constraints\IsTrue;
use Symfony\Component\Form\Extension\Core\Type\CheckboxType;
use Symfony\Component\Validator\Constraints\Regex;
use Doctrine\ORM\EntityRepository;
use Symfony\Component\OptionsResolver\OptionsResolver;
class ContactType extends AbstractType
{
/**
* @param FormBuilderInterface $builder
* @param array $options
*/
public function buildForm(FormBuilderInterface $builder, array $options)
{
$builder
->add('message', TextareaType::class, [
'attr' => [
'class' => 'form_control',
'rows' => 5, // optionnel : hauteur du textarea
],
'constraints' => [
new NotBlank(['message' => 'Veuillez saisir un message']),
],
])
->add('reference', TextType::class, [
'mapped' => false, // Ce champ n’est pas lié à HistoriqueClient
'required' => true, // Rend le champ obligatoire
'constraints' => [
new NotBlank([
'message' => 'Veuillez saisir une référence client',
]),
],
])
->add('sujet', ChoiceType::class, [
'mapped' => false,
'choices' => [
'Demande d\'information' => 'demande_information',
'Support technique' => 'support_technique',
'Partenariat' => 'partenariat',
'Autre' => 'autre',
],
'placeholder' => $options['default_sujet'] ? false : 'Sélectionnez un sujet',
'data' => $options['default_sujet'], // valeur par défaut
'attr' => [
'class' => 'form_control',
],
'constraints' => [
new NotBlank(['message' => 'Veuillez sélectionner un sujet']),
],
])
->add('prenom', TextType::class, [
'mapped' => false, // Ce champ n’est pas lié à HistoriqueClient
'required' => true, // Rend le champ obligatoire
'constraints' => [
new NotBlank([
'message' => 'Veuillez saisir un prénom',
]),
],
])
->add('nom', TextType::class, [
'mapped' => false, // Ce champ n’est pas lié à HistoriqueClient
'required' => true, // Rend le champ obligatoire
'constraints' => [
new NotBlank([
'message' => 'Veuillez saisir un nom',
]),
],
])
->add('telephone', TextType::class, [
'mapped' => false, // Ce champ n’est pas lié à HistoriqueClient
'required' => true, // Rend le champ obligatoire
'constraints' => [
new NotBlank([
'message' => 'Veuillez saisir un numéro de téléphone',
]),
new Regex([
'pattern' => '/^\+?\d{10,15}$/',
'message' => 'Le numéro de téléphone n’est pas valide',
]),
],
])
->add('email', TextType::class, [
'mapped' => false, // Ce champ n’est pas lié à HistoriqueClient
'required' => true, // Rend le champ obligatoire
'constraints' => [
new NotBlank([
'message' => 'Veuillez saisir une adresse email',
]),
],
])
->add('accept_cgu', CheckboxType::class, [
'mapped' => false,
'label' => "J'accepte que mes données soient utilisées pour me contacter (voir la politique de confidentialité).",
'constraints' => [
new IsTrue([
'message' => 'Vous devez accepter que vos données soient utilisées.',
]),
],
]);
;
}
public function configureOptions(OptionsResolver $resolver)
{
$resolver->setDefaults([
'data_class' => HistoriqueClient::class,
'default_sujet' => null, // valeur par défaut
]);
// Déclare explicitement l’option
$resolver->setDefined('default_sujet');
}
public function getName()
{
return 'dtc_formulaire_contact';
}
public function getBlockPrefix():string
{
return 'dtc_formulaire_contact';
}
}