src/Form/ContactType.php line 24

Open in your IDE?
  1. <?php
  2. namespace App\Form;
  3. use App\Entity\Contact;
  4. use libphonenumber\PhoneNumberUtil;
  5. use libphonenumber\PhoneNumberFormat;
  6. use Symfony\Component\Form\AbstractType;
  7. use Symfony\Component\Form\FormBuilderInterface;
  8. use Symfony\Component\Validator\Constraints\Email;
  9. use Symfony\Component\Validator\Constraints\Regex;
  10. use Misd\PhoneNumberBundle\Form\Type\PhoneNumberType;
  11. use Symfony\Component\Validator\Constraints\NotBlank;
  12. use Symfony\Component\OptionsResolver\OptionsResolver;
  13. use Symfony\Component\Form\Extension\Core\Type\TextType;
  14. use Symfony\Component\Form\Extension\Core\Type\EmailType;
  15. use App\Form\DataTransformer\StringToPhoneNumberTransformer;
  16. use Symfony\Component\Form\Extension\Core\Type\ChoiceType;
  17. use Symfony\Component\Form\Extension\Core\Type\TextareaType;
  18. /**
  19.  * Formulaire de contact
  20.  */
  21. class ContactType extends AbstractType
  22. {
  23.     private $phoneNumberUtil;
  24.     public function __construct(PhoneNumberUtil $util)
  25.     {
  26.         $this->phoneNumberUtil $util;
  27.     }
  28.     public function buildForm(FormBuilderInterface $builder, array $options): void
  29.     {
  30.         $builder
  31.             ->add('civility'ChoiceType::class, [
  32.                 'label' => 'Civilité',
  33.                 'choices' => [
  34.                     'M.' => 'M.',
  35.                     'Mme' => 'Mme'
  36.                 ],
  37.             ])
  38.             ->add('name'TextType::class, [
  39.                 'label' => 'Prénom et Nom',
  40.                 'attr' => ['placeholder' => "Nom et Prénom"],
  41.                 'constraints' => [
  42.                     new NotBlank([
  43.                         'message' => "Saisissez votre nom et prénom"
  44.                     ]),
  45.                     new Regex("/^[a-zA-Z\s'ÀÂÉÊÈËÌÏÎÔÙÛÇÆŒàâéêèëìïîôùûçæœ]{5,100}$/i""Le nom et prénom ne doivent pas contenir de caractère speciaux (@,_,\,/,.,$, etc..) et des chiffres.")
  46.                 ]
  47.             ])
  48.             ->add('email'EmailType::class, [
  49.                 'label' => 'Adresse email',
  50.                 'attr' => ['placeholder' => "exemple@gmail.com"],
  51.                 'constraints' => [
  52.                     new NotBlank([
  53.                         'message' => "Saisissez une adresse e-mail"
  54.                     ]),
  55.                     new Email([
  56.                         'message' => "L'adresse e-mail n'est pas valide"
  57.                     ])
  58.                 ]
  59.             ])
  60.             ->add('company'TextType::class, [
  61.                 'label' => 'Entreprise',
  62.             ])
  63.             ->add('subject'TextType::class, [
  64.                 'label' => 'Objet',
  65.                 'attr' => ['placeholder' => 'Objet du message'],
  66.                 'constraints' => [
  67.                     new NotBlank([
  68.                         'message' => "Saisissez le sujet"
  69.                     ])
  70.                 ]
  71.             ])
  72.             ->add('content'TextareaType::class, [
  73.                 'label' => "Message",
  74.                 'attr' => ['rows' => "4"'placeholder' => 'Contenu du message'],
  75.                 'constraints' => [
  76.                     new NotBlank([
  77.                         'message' => "Saisissez le contenu de votre message"
  78.                     ])
  79.                 ]
  80.             ])->add('phone'PhoneNumberType::class, [
  81.                 'label' => "Téléphone",
  82.                 'widget' => PhoneNumberType::WIDGET_COUNTRY_CHOICE,
  83.                 'format' => [PhoneNumberFormat::INTERNATIONAL],
  84.                 'preferred_country_choices' => ['GN''FR''US''GB'],
  85.                 'attr' => ['class' => 'phoneNumber'],
  86.                 'invalid_message' => "Cette valeur n'est pas un numéro de téléphone valide.",
  87.                 'constraints' => [
  88.                     new NotBlank([
  89.                         'message' => "Saisissez votre numéro de téléphone"
  90.                     ])
  91.                 ]
  92.             ]);
  93.         //$builder->get('phone')->addModelTransformer(new StringToPhoneNumberTransformer($this->phoneNumberUtil));
  94.     }
  95.     public function getBlockPrefix(){
  96.         return false;
  97.     }
  98.     public function configureOptions(OptionsResolver $resolver): void
  99.     {
  100.         $resolver->setDefaults([
  101.             // Configure your form options here
  102.             'data_class' => Contact::class,
  103.         ]);
  104.     }
  105. }