Aller au contenu
FormFlow

Rendre le schéma d’un formulaire impératif avec le mode strict

Le mode strict est désactivé par défaut : le schéma guide la génération au lieu de juger les réponses. Activez-le par formulaire et un champ non déclaré devient un refus, les champs de fichier restant impératifs dans les deux cas.

Cet article a été traduit automatiquement. Lire l'original en anglais

A dark FormFlow plate contrasting an advisory schema with Strict mode, where the Form's field rules become authoritative.

Le mode strict est un interrupteur propre à un formulaire, et il est désactivé à la création. Ce n’est pas un oubli : presque tous les formulaires commencent ainsi, parce qu’un formulaire qui n’a jamais reçu de soumission ne connaît pas encore sa propre forme. Ce que l’interrupteur change, c’est à qui le schéma sert.

Ce qui change quand vous l’activez

Mode strict désactivé, le schéma guide la génération. Il décide quels champs l’aperçu du constructeur montre et ce que le composant généré dessine, et c’est contre lui que FormFlow apprend lorsqu’il propose d’adopter un champ qu’il a vu arriver. Mais il ne juge pas les réponses. Une clé en trop n’est pas une infraction : elle arrive comme réponse.

Mode strict activé, le schéma devient le contrat dans les deux sens. Un champ déclaré qui n’arrive pas, ou qui ne satisfait pas ses règles, est refusé. Une clé non déclarée qui arrive est refusée aussi : même porte, même erreur rattachée au champ, avec un message disant que le champ n’a pas été déclaré. Cette symétrie est tout l’objet : un formulaire strict ne peut pas accumuler en silence des réponses qu’il n’a jamais demandées. Le mode strict est arrivé avec la v1.0.0, et la référence de l’API décrit le refus qu’il renvoie.

Les règles de champ viennent d’un vocabulaire fermé

Le mode strict est aussi le seul mode où les règles de champ s’appliquent. Une règle de champ est une contrainte supplémentaire sur un champ, au-delà de ce que son type implique déjà, et elle se choisit dans une liste que FormFlow fournit et limite à ce type. Vous choisissez dans la liste ; vous n’écrivez jamais de règle. Un formulaire ne peut pas demander à FormFlow d’exécuter un contrôle que FormFlow n’a pas écrit.

Type de champ

Règles au choix

Bornes

Texte

Lettres uniquement ; Lettres et chiffres ; Lettres, chiffres, tirets et traits de soulignement ; ASCII simple uniquement ; Minuscules ; Majuscules ; Un UUID ; Un ULID ; Une adresse IP ; Une adresse MAC ; Une couleur hexadécimale

longueur min et max

Zone de texte

ASCII simple uniquement ; JSON valide

longueur min et max

Nombre

Un nombre entier

valeur min et max

E-mail, Téléphone

aucune

longueur min et max

Liste, Choix unique

aucune

aucune

Deux remarques sur ce tableau. Une borne est un nombre entier, jusqu’à six chiffres. Et un type à liste d’options n’accepte aucune règle : sa liste d’options est déjà la contrainte, et le mode strict juge chaque réponse contre elle.

Là où le mode strict ne se choisit pas

Un champ de fichier déclaré fait autorité sur tous les formulaires, mode strict activé ou non. Il est jugé sur le type, la taille et le nombre à chaque fois, et il refuse durement. C’est délibéré : un envoi, ce sont des octets sur disque, donc cela ne peut pas dépendre d’un réglage désactivé par défaut. L’autre exception est un formulaire noté : un formulaire doté d’un corrigé est toujours en mode strict et ne peut être qu’une page hébergée, car un balisage intégré ne peut ni l’exposer ni le noter équitablement.

Décidez sur preuves, pas sur nervosité

Avant de l’activer, rejouez la configuration candidate sur l’historique du formulaire lui-même. FormFlow conserve les soumissions qu’un formulaire a acceptées et les soumissions refusées qu’il a écartées : la relecture peut donc montrer ce que le changement coûterait avant que quelqu’un ne le paie. C’est pourquoi le mode strict peut s’activer tard, quand un formulaire a déjà du trafic.

L’autre raison de rester calme : un refus n’est pas une perte invisible. Une soumission refusée est conservée comme un enregistrement sur lequel vous pouvez agir, elle n’est pas livrée, elle ne devient pas une soumission comptabilisée et elle peut être récupérée dès que le réglage est corrigé. Le mode strict augmente l’enjeu d’un schéma juste ; il ne rend pas une erreur définitive.

Limites à connaître

  • Désactivé par défaut. Si vous ne vous souvenez pas de l’avoir activé, il est désactivé.

  • Il ne juge que les réponses. La liste d’origines autorisées et la forme de la requête sont jugées sur tous les formulaires, mode strict ou non.

  • Les champs de fichier déclarés sont jugés dans les deux cas : un test en mode strict qui passe sans envoi ne prouve donc rien sur le fichier.

  • Les règles de champ ne s’appliquent qu’en mode strict. Sortir un formulaire du mode strict cesse silencieusement d’appliquer chaque règle que vous avez choisie pour lui.

  • Un formulaire noté ne peut pas quitter le mode strict et ne peut pas être intégré : planifiez donc son schéma avant sa première soumission.