Aller au contenu principal

Avoir une validation d'un champ "HiddenType" avec Symfony 3 (et jquery-validate)

Il se peut parfois que nous ayons un champ "HiddenType" dans un formulaire et que ce champ soit complété par une étape en dehors du formulaire (exemple : un service qui permet de choisir un revendeur sur une carte Google).
Nous aimerions avoir une validation sur ce champ et nous utilisons également la librairie jquery-validate. Voici comment procéder.

Pour commencer il vous faut ajouter le validateur sur le champ dans la methode buildForm() dans votre classe. Ici nous voulons qu'il soit obligatoire :

public function buildForm(FormBuilderInterface $builder, array $options) {

    $builder
      ->add(...)
      ...
      ->add('dealer_code', HiddenType::class, array(
        'required' => true,
      ));
  }

Dans votre vue Twig, il sera nécessaire d'afficher le message de validation à l'endroit où vous voulez qu'il s'affiche :

<div class="input-field col-md-12">
            <span>Choisissez un revendeur</span>
            {{ form_widget(form.selectionner) }} {# ici un bouton qui nous renvoit vers notre service de localisation de revendeur #}
            {{ form_errors(form.dealer_code) }} {# nous décidons d'afficher le message d'erreur ici sans quoi ce message s'affichera en dessous de tous les champs du formulaire #}
            {{ form_widget(form.dealer_code) }}
</div>

Au niveau de jquery-validate il faudra ajouter l'option "ignore" avec un array vide sinon le validateur sur les champs de type "hidden" seront ignorés :

$("#formValidate").validate({
        ignore: [],
        ...,
        messages: {
             dealer_code: {
                  required: "Veuillez choisir un revendeur"
             }
        },
});