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"
}
},
});