src/Form/ContactType.php line 30

Open in your IDE?
  1. <?php
  2. namespace App\Form;
  3. use App\Entity\ContactSubjectType;
  4. use App\Repository\ContactSubjectTypeRepository;
  5. use Symfony\Bridge\Doctrine\Form\Type\EntityType;
  6. use Symfony\Component\Form\AbstractType;
  7. use Symfony\Component\Form\Extension\Core\Type\CheckboxType;
  8. use Symfony\Component\Form\Extension\Core\Type\EmailType;
  9. use Symfony\Component\Form\Extension\Core\Type\HiddenType;
  10. use Symfony\Component\Form\Extension\Core\Type\TextareaType;
  11. use Symfony\Component\Form\Extension\Core\Type\TextType;
  12. use Symfony\Component\Form\FormBuilderInterface;
  13. use Symfony\Component\OptionsResolver\OptionsResolver;
  14. class ContactType extends AbstractType
  15. {
  16.     public function buildForm(FormBuilderInterface $builder, array $options)
  17.     {
  18.         $cabinet=$options['cabinet'];
  19.         $builder
  20.             ->add('subjectType'EntityType::class, [
  21.                 'label' => 'Sujet',
  22.                 'class' => ContactSubjectType::class,
  23.                 'choice_label' => 'name',
  24.                 'placeholder' => 'Sélectionnez un sujet',
  25.                 'required' => true,
  26.                 'query_builder' => function (ContactSubjectTypeRepository $repository) {
  27.                     return $repository->createQueryBuilder('s')
  28.                         ->addSelect(
  29.                             "CASE
  30.                                 WHEN s.slug = :demandeDevise THEN 0
  31.                                 WHEN s.slug = :prospect THEN 1
  32.                                 ELSE 2
  33.                             END AS HIDDEN sortKey"
  34.                         )
  35.                         ->orderBy('sortKey''ASC')
  36.                         ->addOrderBy('s.id''ASC')
  37.                         ->setParameter('demandeDevise'ContactSubjectType::DEMANDE_DEVISE)
  38.                         ->setParameter('prospect'ContactSubjectType::PROSPECT);
  39.                 },
  40.             ])
  41.             ->add('name'TextType::class, [
  42.                 'required' => true,
  43.                 'label' => "Nom",
  44.                 'attr' => array(
  45.                     'placeholder' => 'Nom'
  46.                 )
  47.             ])
  48.             ->add('phone'TextType::class, [
  49.                 'required' => true,
  50.                 'label' => "Téléphone",
  51.                 'attr' => array(
  52.                     'placeholder' => 'Téléphone'
  53.                 )
  54.             ])
  55.             ->add('email'EmailType::class, [
  56.                 'required' => true,
  57.                 'label' => "Email",
  58.                 'attr' => array(
  59.                     'placeholder' => 'Email'
  60.                 )
  61.             ])
  62.             ->add('message'TextareaType::class, [
  63.                 'required' => true,
  64.                 'label' => "Message",
  65.                 'attr' => array(
  66.                     'placeholder' => 'Message'
  67.                 )
  68.             ])
  69.             ->add('rgpd'CheckboxType::class, [
  70.                 'required' => true,
  71.                 '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",
  72.             ])
  73.             ->add('page'HiddenType::class, [
  74.                 'required' => true,
  75.             ])
  76.             ->add('route'HiddenType::class, [
  77.                 'required' => false,
  78.                 'mapped' => false,
  79.             ])
  80.             ->add('form_timestamp'HiddenType::class, [
  81.                 'mapped' => false,
  82.                 'required' => true,
  83.             ])
  84.             ->add('id_prescriber'HiddenType::class, [
  85.                 'required' => false,
  86.                 'mapped' => false,
  87.             ]);
  88.             if($cabinet!=null)
  89.           if($cabinet->getParameters()->getGOOGLERECAPTCHASECRET()!=null && $cabinet->getParameters()->getGOOGLERECAPTCHASITEKEY()!=null )
  90.             {
  91.             $builder
  92.              ->add('captcha'ReCaptchaType::class, [
  93.          'type' => 'invisible' // (invisible, checkbox)
  94.             ]);
  95.          }
  96.             //->add('Envoyer', SubmitType::class)
  97.     }
  98.     public function configureOptions(OptionsResolver $resolver)
  99.     {
  100.         $resolver->setDefaults([
  101.             'csrf_protection' => false,
  102.             'cabinet'=>null
  103.         ]);
  104.     }
  105. }