src/Form/Type/ContactezDirectementMembreExpertsType.php line 37

Open in your IDE?
  1. <?php
  2. declare(strict_types=1);
  3. /**
  4.  * @author Mehrez Labidi
  5.  */
  6. namespace App\Form\Type;
  7. use App\Form\DataTransformer\MessageTransformer;
  8. use App\Helper\TransProvider;
  9. use App\Services\TelephoneInternational;
  10. use EWZ\Bundle\RecaptchaBundle\Validator\Constraints as Recaptcha;
  11. use EWZ\Bundle\RecaptchaBundle\Form\Type\EWZRecaptchaType;
  12. use Symfony\Component\Form\AbstractType;
  13. use Symfony\Component\Form\Extension\Core\Type\{
  14.     HiddenType,
  15.     TextareaType,
  16.     TextType,
  17.     ChoiceType
  18. };
  19. use Symfony\Component\Form\FormBuilderInterface;
  20. use Symfony\Component\OptionsResolver\OptionsResolver;
  21. use App\Validator\Constraints\Nom;
  22. use App\Validator\Constraints\Prenom;
  23. use Symfony\Component\Validator\Constraints as Assert;
  24. use Symfony\Component\Validator\Constraints\{
  25.     NotBlank,
  26.     Length
  27. };
  28. /**
  29.  * Description of ContactezDirectementMembreExpertsType
  30.  *
  31.  * @author mehrez
  32.  */
  33. class ContactezDirectementMembreExpertsType extends AbstractType {
  34.     /**
  35.      * @var MessageTransformer
  36.      */
  37.     private $messageTransformer;
  38.     /**
  39.      * @var TelephoneInternational
  40.      */
  41.     private $telephoneInternational;
  42.     /**
  43.      * @var TransProvider
  44.      */
  45.     private $transProvider;
  46.     /**
  47.      * @param TransProvider $transProvider
  48.      * @param MessageTransformer $messageTransformer
  49.      * @param TelephoneInternational $telephoneInternational
  50.      */
  51.     public function __construct(TransProvider $transProviderMessageTransformer $messageTransformerTelephoneInternational $telephoneInternational) {
  52.         $this->messageTransformer $messageTransformer;
  53.         $this->telephoneInternational $telephoneInternational;
  54.         $this->transProvider $transProvider;
  55.     }
  56.     /**
  57.      * @param FormBuilderInterface $builder
  58.      * @param array $options
  59.      * @return void
  60.      */
  61.     public function buildForm(FormBuilderInterface $builder, array $options) {
  62.         $builder
  63.                 ->add('nom'TextType::class,
  64.                         [
  65.                             "constraints" => [
  66.                                 new NotBlank([
  67.                                     "message" => "le champ nom est obligatoire"
  68.                                         ]),
  69.                                 new Nom()
  70.                             ],
  71.                             "attr" => [
  72.                                 "autocomplete" => "off",
  73.                                 "class" => "form-control"
  74.                             ],
  75.                         ]
  76.                 )
  77.                 ->add('prenom'TextType::class,
  78.                         [
  79.                             "constraints" => [
  80.                                 new NotBlank([
  81.                                     "message" => "le champ prenom est obligatoire",
  82.                                         ]),
  83.                                 new Prenom()
  84.                             ],
  85.                             "attr" => [
  86.                                 "autocomplete" => "off",
  87.                                 "class" => "form-control"
  88.                             ],
  89.                         ]
  90.                 )
  91.                 ->add('mail'TextType::class,
  92.                         [
  93.                             "constraints" => [
  94.                                 new NotBlank(["message" => "le champ mail est obligatoire"]),
  95.                                 new Assert\Email(["message" => "l'adresse mail saisie est invalide"]),
  96.                             ],
  97.                             "attr" => [
  98.                                 "autocomplete" => "off",
  99.                                 "class" => "form-control"
  100.                             ],
  101.                         ]
  102.                 )
  103.                 ->add('telephone'TextType::class, [
  104.                     "constraints" => [
  105.                         new NotBlank(["message" => "le champ telephone est obligatoire"])
  106.                     ]
  107.                 ])
  108.                 ->add('indicatif'ChoiceType::class, [
  109.                     'choices' => $this->telephoneInternational->listIndicatifChoiceForm(),
  110.                     'attr' => ['class' => 'form-control'],
  111.                     'choice_attr' => function ($key$val$index) {
  112.                         return ($key == "") ? ['disabled' => 'disabled'] : [];
  113.                     },
  114.                     'data' => array_values($this->telephoneInternational->listIndicatifChoiceForm())[0]
  115.                         ]
  116.                 )
  117.                 ->add('message'TextareaType::class, [
  118.                     "constraints" => [
  119.                         new NotBlank(["message" => "le champ message est obligatoire"]),
  120.                         new Assert\Length(['max' => 3000'maxMessage' => "le champ message renseigné est trop long"])
  121.                     ],
  122.                     "attr" => [
  123.                         "autocomplete" => "off""rows" => 8,
  124.                         "class" => "form-control"
  125.                     
  126.                 ])->addViewTransformer($this->messageTransformertrue)
  127.                 ->add('recaptcha'EWZRecaptchaType::class,
  128.                         [
  129.                             "constraints" => [
  130.                                 new Recaptcha\IsTrue(["message" => "captcha invalide"]),
  131.                             ],
  132.                             'mapped' => false,
  133.                             'language' => $this->transProvider->getLocale()
  134.                         ]
  135.                 )
  136.                 ->add('id_service_prestataire'HiddenType::class)
  137.                 ->add('id_membre'HiddenType::class)
  138.                 ->add('lang'HiddenType::class)
  139.         ;
  140.     }
  141.     /**
  142.      * @param OptionsResolver $resolver
  143.      * @return void
  144.      */
  145.     public function configureOptions(OptionsResolver $resolver) {
  146.         $resolver->setDefaults([
  147.             'data_class' => null,
  148.             'csrf_protection' => false,
  149.             'allow_extra_fields' => true,
  150.         ]);
  151.     }
  152.     /**
  153.      * @return string
  154.      */
  155.     public function getBlockPrefix() { // pour unifier avec les inputs definis dans html
  156.         return 'form';
  157.     }
  158. }