Skip to content

Schéma et valeurs

QForm Builder sépare la structure du formulaire et les données saisies.

DonnéeRôle
schemaListe des champs, structures, options Quasar/FormKit et métadonnées utiles au rendu.
valuesValeurs courantes du formulaire.
settingsRé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

ts
import type { FormKitSchemaDefinition } from '@formkit/core'

const schema: FormKitSchemaDefinition[] = [
  {
    $formkit: 'text',
    name: 'email',
    label: 'Adresse e-mail',
    validation: 'required|email',
  },
]

Valeurs

ts
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 :

ts
type QFormDocument = {
  id: string
  version: number
  schema: FormKitSchemaDefinition[]
  values: Record<string, unknown>
  settings: Record<string, unknown>
  updatedAt: string
}

Exemple de sauvegarde :

ts
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 :

  1. validez sa forme ;
  2. refusez les propriétés inconnues dangereuses ;
  3. limitez les tailles de chaînes ;
  4. stockez les fichiers hors du JSON ;
  5. journalisez les changements importants.

QForm Builder — layer Nuxt 4, Quasar et FormKit pour formulaires dynamiques.