Schéma et valeurs
QForm Builder sépare la structure du formulaire et les données saisies.
| Donnée | Rôle |
|---|---|
schema | Liste des champs, structures, options Quasar/FormKit et métadonnées utiles au rendu. |
values | Valeurs courantes du formulaire. |
settings | Réglages du builder et informations de thème. |
Cette séparation permet de construire un formulaire dans une page d’administration, puis de le rendre dans une autre page avec d’autres valeurs.
Schéma minimal
import type { FormKitSchemaDefinition } from '@formkit/core'
const schema: FormKitSchemaDefinition[] = [
{
$formkit: 'text',
name: 'email',
label: 'Adresse e-mail',
validation: 'required|email',
},
]Valeurs
const values: Record<string, unknown> = {
email: 'contact@example.test',
}Les clés de values correspondent aux noms des champs. Gardez ces noms stables si le formulaire est déjà publié.
Document sauvegardé
Un stockage applicatif peut conserver un document plus complet :
type QFormDocument = {
id: string
version: number
schema: FormKitSchemaDefinition[]
values: Record<string, unknown>
settings: Record<string, unknown>
updatedAt: string
}Exemple de sauvegarde :
async function saveDocument(document: QFormDocument) {
await $fetch(`/api/forms/${encodeURIComponent(document.id)}`, {
method: 'PUT',
body: document,
})
}Champs cachés
Le champ caché peut stocker :
- une valeur littérale ;
- une expression FormKit contrôlée ;
- une valeur numérique ;
- une valeur exclue de la soumission.
Les expressions sont bornées et filtrées pour éviter les accès dangereux aux objets globaux ou aux prototypes.
Migration
Les documents exportés sont versionnés. Si un ancien schéma est importé, le registre de migrations le convertit avant le rendu.
Consultez Versions et migrations pour les règles détaillées.
Sécurité
Un schéma est une donnée utilisateur. Avant de le stocker ou de le rendre :
- validez sa forme ;
- refusez les propriétés inconnues dangereuses ;
- limitez les tailles de chaînes ;
- stockez les fichiers hors du JSON ;
- journalisez les changements importants.