ID du formulaire

Champs et validation

Définissez les champs une fois et Ikiform valide chaque soumission côté serveur, avec des messages clairs et des valeurs typées.

Les champs sont facultatifs. Un formulaire sans champs accepte toutes les données qu'il reçoit. Dès que vous publiez des champs, Ikiform valide chaque soumission par rapport à eux côté serveur, refuse les données invalides avec des messages clairs et stocke des valeurs propres et typées.

Définir les champs

Ouvrez un formulaire dans le tableau de bord et allez dans Fields. Ajoutez des champs dans l'éditeur visuel ou modifiez directement la définition JSON. L'id de chaque champ est le name d'input que votre formulaire doit envoyer.

Définition du formulaire
{
  "version": 1,
  "title": "Contact",
  "fields": [
    { "id": "name", "type": "text", "label": "Name", "required": true, "validation": { "max_length": 120 } },
    { "id": "email", "type": "email", "label": "Email", "required": true },
    {
      "id": "topic",
      "type": "select",
      "label": "Topic",
      "options": [
        { "value": "sales", "label": "Sales" },
        { "value": "support", "label": "Support" }
      ]
    },
    { "id": "message", "type": "textarea", "label": "Message", "validation": { "min_length": 10 } }
  ],
  "settings": { "submit_label": "Send", "success_message": "Thanks, we'll reply within a day." }
}

La définition

CléObligatoireRègles
versionOuiToujours 1
titleOui1 à 200 caractères
descriptionNonJusqu'à 2 000 caractères
fieldsOui1 à 100 champs aux ids uniques, 2 000 options au maximum au total
settings.submit_labelNon1 à 100 caractères, utilisé par les moteurs de rendu comme le composant shadcn/ui
settings.success_messageNon1 à 1 000 caractères
settings.redirect_urlNonUne URL http: ou https: jusqu'à 2 048 caractères
$schemaNonN'importe quelle chaîne jusqu'à 200 caractères, ignorée

Les clés inconnues sont refusées, à la racine comme sur chaque champ, donc une faute de frappe comme requried apparaît comme une erreur à l'enregistrement.

Clés communes à tous les champs

CléObligatoireRègles
idOuisnake_case en minuscules, commence par une lettre, 64 caractères au maximum, par exemple team_size
typeOuiL'un des 12 types ci-dessous
labelOui1 à 200 caractères. Utilisé dans les pages d'erreur et les e-mails de notification
requiredNontrue fait d'une valeur vide une erreur
placeholderNonJusqu'à 200 caractères
help_textNonJusqu'à 1 000 caractères

Bac à sable

201 Created : le serveur stockerait ceci

{
  "ok": true,
  "id": "sub_01k7v2c9t3e8m5q4x6z0a1b2c3"
}

Exécute le validateur d'Ikiform dans votre navigateur. Les champs qui commencent par un underscore sont réservés et retirés avant la validation, comme sur le serveur.

Types de champs

TypeStocké enAccepte
textstringN'importe quel texte sur une ligne
textareastringTexte sur plusieurs lignes
emailstring, domaine en minusculesUne adresse e-mail
numbernumberDes nombres, ou des chaînes numériques venant de formulaires HTML
selectstringUne valeur d'option listée
radiostringUne valeur d'option listée
multi_selectstring[]Des valeurs d'options listées, doublons retirés
checkboxbooleanon, true, 1, yes, ou rien
datestring, YYYY-MM-DDUne date réelle du calendrier
urlstring, normaliséeUne adresse web, avec https:// ajouté s'il manque
phonestringChiffres, espaces, + ( ) . -
ratingintegerUn nombre entier de 1 à max

text

validationValeursPar défaut
min_length0 à 10 000Aucun
max_length1 à 10 000, ou 256 au maximum avec un pattern1 000, ou 256 avec un pattern
patternUne expression régulière jusqu'à 200 caractères, appliquée à la valeur entièreAucun
pattern_message1 à 200 caractèresInvalid format

Les patterns s'exécutent avec le flag u et doivent correspondre à la valeur entière. À l'enregistrement, Ikiform refuse les patterns susceptibles d'un backtracking catastrophique : références arrière, groupes répétés contenant des répétitions ou des alternatives ((a+)+, (a|b)*), et trop de répétitions imbriquées.

textarea

CléValeursPar défaut
validation.min_length0 à 16 000Aucun
validation.max_length1 à 16 00010,000
rows1 à 50, une indication d'affichage pour les moteurs de renduAucun

email

validationValeursPar défaut
allowed_domains1 à 100 domaines comme example.com, comparés exactementN'importe quel domaine

Les adresses de plus de 254 caractères sont refusées. La partie domaine est stockée en minuscules ; la partie avant @ est gardée telle qu'envoyée.

number

validationValeursPar défaut
minN'importe quel nombreAucun
maxN'importe quel nombre, au moins minAucun
integertrue pour refuser les décimalesfalse

select, radio et multi_select

CléValeursPar défaut
options1 à 500 objets { "value", "label" } aux valeurs uniques, de 1 à 200 caractères chacunObligatoire
validation.min_itemsmulti_select uniquement, 0 à 5000, ou 1 si obligatoire
validation.max_itemsmulti_select uniquement, 1 à 500Le nombre d'options

Seules les valeurs listées sont acceptées. select et radio prennent une seule valeur ; envoyez multi_select sous forme de noms répétés, de name[] ou d'un tableau JSON.

checkbox

Pas de clé supplémentaire. Une case absente vaut false. required: true signifie qu'elle doit être cochée, ce qui convient aux cases de consentement. Les valeurs autres que on, true, 1, yes, off, false, 0, no ou vide sont refusées.

date

validationValeursPar défaut
minUne date YYYY-MM-DDAucun
maxUne date YYYY-MM-DD, égale ou postérieure à minAucun

url

validationValeursPar défaut
https_onlytrue pour refuser http:false
max_length1 à 4 0962,048

Seules les URL http: et https: avec un nom d'hôte contenant un point, sans nom d'utilisateur ni mot de passe, sont acceptées. La valeur stockée est l'URL normalisée.

phone

validationValeursPar défaut
e164true pour exiger le format international, stocké sans séparateursfalse

Sans e164, un numéro de téléphone doit avoir de 6 à 15 chiffres et est stocké tel qu'envoyé. Avec, +1 (415) 555-0123 est stocké sous la forme +14155550123.

rating

validationValeursPar défaut
max2 à 105

Conversion

Les formulaires HTML envoient tout sous forme de texte. Ikiform convertit chaque valeur dans le type déclaré par le champ avant de la stocker. Avec name en texte, email, guests en nombre, newsletter en case à cocher, site en URL et phone en téléphone :

Envoyé, urlencoded
name=++Ada+Lovelace++&email=Ada@Example.COM&guests=3&newsletter=on&site=example.com&phone=%2B1%20415%20555%200123
Stocké, avec phone en e164
{
  "name": "Ada Lovelace",
  "email": "Ada@example.com",
  "guests": 3,
  "newsletter": true,
  "site": "https://example.com/",
  "phone": "+14155550123"
}
  • Les espaces en début et fin de valeur sont retirés. Une chaîne vide compte comme absente.
  • Un champ qui attend une seule valeur refuse un tableau de plus d'un élément.
  • Les nombres acceptent la notation décimale et exponentielle jusqu'à 64 caractères, comme 3, -2.5 ou 1e3.

Erreurs de validation

Une soumission qui échoue à la validation est refusée avec 422 validation_failed et rien n'est stocké. error.fields associe chaque id de champ à ses messages. Les envois depuis un navigateur affichent les mêmes messages sur une page d'erreur hébergée, avec les libellés de vos champs.

422 Unprocessable Content
{
  "ok": false,
  "error": {
    "code": "validation_failed",
    "message": "Some fields are invalid.",
    "fields": {
      "email": ["Enter a valid email address"],
      "website": ["Unknown field \"website\""]
    }
  },
  "request_id": "req_01k7v2c9t3e8m5q4x6z0a1b2c3"
}

Champs inconnus

Avec des champs définis, tout champ absent de la définition est refusé avec Unknown field "name". Les champs réservés qui commencent par _, le honeypot et cf-turnstile-response ne comptent pas. Sans définition, tous les noms de champs sont acceptés.

Messages

ProblèmeMessage
Valeur obligatoire manquanteThis field is required
Case obligatoire non cochéeThis box must be checked
Trop court ou trop longMust be at least 10 characters, Must be at most 120 characters
Pattern non respectéVotre pattern_message, ou Invalid format
E-mailEnter a valid email address, Email must be at one of: example.com
NombreEnter a number, Enter a whole number, Must be at least 1
OptionsChoose one of the listed options, Choose at least 2 options, Choose at most 3 options
DateEnter a valid date (YYYY-MM-DD), Must be on or after 2026-01-01
URLEnter a valid URL, Enter a valid https:// URL
TéléphoneEnter a valid phone number, Use international format, e.g. +14155550123
NoteChoose a rating, Rating must be at most 5

Valider dans le navigateur

Le validate du SDK reproduit les règles et messages du serveur pour les 12 types de champs, ce qui permet d'afficher les erreurs avant l'envoi. Le serveur reste la référence. Voir validate.