Aller au contenu principal
Menu
Offcanvas

Comment supprimer les erreurs de validation avec un bouton de retour sur un formulaire multistep Drupal ?

Si on crée un formulaire en ajax et multistep, on peut rencontrer un problème avec le bouton retour à l'étape précédente qui va provoquer un problème de validation.

Explication concrète avec formulaire en ajax et multistep

En effet Drupal va considérer que le champ de l'étape actuelle n’a pas été rempli et cela va retourner une erreur. Or, l'utilisateur souhaite retourner à l’étape précédente du formulaire et il est donc normal qu’il n’ait pas encore rempli ce champ. Cela pose donc un problème d’UX assez sérieux car l'utilisateur s'attend à pouvoir retourner à l’étape précédente.

Voilà un exemple concret.

L'utilisateur saisit son code postal, passe à l'étape 2 ou on lui demande son numéro de tél. Il souhaite retourner à l'étape du code postal et ne peut pas car le champ téléphone est obligatoire.

Il existe une solution extrêmement simple sur drupal. On peut limiter la validation sur le bouton retour avec  #limit_validation_errors'

Code #limit_validation_errors

$form['wrapper']['actions']['back'] = [
      '#type' => 'submit',
      '#name' => 'previous-step',
      '#value' => 'Back',
      '#submit' => ['::decrementStep'],
      '#ajax' => [
        'callback' => [$this, 'ajaxFormCallback'],
        'wrapper' => 'form-container',
      ],
      '#attributes' =>
      ['class' => ['btn btn-primary btn-prev']],
      '#limit_validation_errors' => [],
    ];

 

Explication

#limit_validation_errors : Cette propriété est définie sur un tableau vide ([]). Cela signifie que lors de la soumission du formulaire, cet élément de formulaire (le bouton 'Retour') sera exclu de la validation. Cela peut être utile si vous ne souhaitez pas valider ce bouton spécifique, car il est destiné à une action de navigation et non à la soumission de données.

Autres ressources utiles

Ajouter un commentaire

Articles similaires

Comment supprimer les changements locaux avec git que l'on n'a pas commit ?

LIRE LA SUITE