src/Form/AuditLinkedinType.php line 24

Open in your IDE?
  1. <?php
  2. namespace App\Form;
  3. use App\Entity\Audit;
  4. use Symfony\Component\Form\AbstractType;
  5. use Karser\Recaptcha3Bundle\Form\Recaptcha3Type;
  6. use Symfony\Component\Form\FormBuilderInterface;
  7. use Symfony\Component\OptionsResolver\OptionsResolver;
  8. use Symfony\Component\Form\Extension\Core\Type\TextType;
  9. use Symfony\Component\Form\Extension\Core\Type\CheckboxType;
  10. use Symfony\Component\Form\Extension\Core\Type\TextareaType;
  11. use Karser\Recaptcha3Bundle\Validator\Constraints\Recaptcha3;
  12. /**
  13.  * Formulaire « Pose ta question » de la page Live LinkedIn.
  14.  *
  15.  * Identique à AuditType (même entité Audit, mêmes noms de champs, même
  16.  * traitement via AbstractFrontController::handleAuditSubmission), mais SANS le
  17.  * champ téléphone : le design de cette page ne le demande pas. Le groupe de
  18.  * validation 'with_telephone' est donc volontairement omis, ce qui rend le
  19.  * téléphone facultatif ici alors qu'il reste obligatoire dans AuditType.
  20.  */
  21. class AuditLinkedinType extends AbstractType
  22. {
  23.     public function buildForm(FormBuilderInterface $builder, array $options): void
  24.     {
  25.         $builder
  26.             ->add('name'TextType::class, [
  27.                 'label' => false,
  28.                 'attr' => [
  29.                     'placeholder' => 'Nom & Prénom *'
  30.                 ]
  31.             ])
  32.             ->add('email'TextType::class, [
  33.                 'label' => false,
  34.                 'attr' => [
  35.                     'placeholder' => 'E-mail *'
  36.                 ]
  37.             ])
  38.             ->add('message'TextareaType::class, [
  39.                 'label' => false,
  40.                 'attr' => [
  41.                     'placeholder' => 'Ma question*'
  42.                 ]
  43.             ])
  44.             ->add('rgpd'CheckboxType::class, [
  45.                 'mapped' => false,
  46.                 'required' => true,
  47.                 'label' => "En soumettant ce formulaire, j'accepte que les informations saisies soient exploitées dans le cadre de la demande de devis et de la relation commerciale qui peut en découler",
  48.             ])
  49.             ->add('page'TextType::class, [
  50.                 'label' => false,
  51.                 'attr' => [
  52.                     'hidden' => true
  53.                 ]
  54.             ])
  55.             ->add('captcha'Recaptcha3Type::class, [
  56.                 'constraints' => new Recaptcha3(['message' => 'La vérification anti-robot a échoué. Merci de réessayer.']),
  57.                 'action_name' => 'AuditLinkedinType',
  58.                 'locale' => 'fr',
  59.             ])
  60.         ;
  61.     }
  62.     public function configureOptions(OptionsResolver $resolver): void
  63.     {
  64.         $resolver->setDefaults([
  65.             'data_class' => Audit::class,
  66.             // 'with_telephone' est volontairement absent : téléphone facultatif.
  67.             'validation_groups' => ['Default''unique_audit_email'],
  68.         ]);
  69.     }
  70. }