Skip to content

Formulaire ​

Collecte et validation de données. Toute la logique de validation est constituée de fonctions pures de @lh-ui/share, sans aucune dépendance à la plateforme : le comportement est identique sur les deux plateformes.

Utilisation de base ​

vue
<template>
  <lh-form :model="form" :rules="rules" ref="formRef" label-width="80">
    <lh-form-item label="Nom d'utilisateur" prop="name">
      <lh-input v-model="form.name" placeholder="Veuillez saisir le nom d'utilisateur" />
    </lh-form-item>
    <lh-form-item label="E-mail" prop="email">
      <lh-input v-model="form.email" placeholder="Veuillez saisir l'e-mail" />
    </lh-form-item>
    <lh-button type="primary" @click="onSubmit">Envoyer</lh-button>
  </lh-form>
</template>

<script setup lang="ts">
import { ref } from 'vue'

const form = ref({ name: '', email: '' })
const formRef = ref()

const rules = {
  name: [{ required: true, message: "Veuillez saisir le nom d'utilisateur", trigger: 'blur' }],
  email: [{ required: true, message: "Veuillez saisir l'e-mail", trigger: 'blur' }],
}

const onSubmit = async () => {
  const ok = await formRef.value.validate()
  if (ok) {
    // Validation réussie, envoi
  }
}
</script>

Form Props ​

PropDescriptionTypeValeur par défaut
modelObjet de données du formulaire (requis)Record<string, unknown>—
rulesRègles de validation (les clés sont les noms de prop)Record<string, LhFormRule[]>—
labelPositionPosition du libellé'left' | 'right' | 'top''right'
labelWidthLargeur du libelléstring | number—
inlineMise en page en lignebooleanfalse
customClassNom de classe personnaliséstring—
sxPropriétés de mise en page rapideLhSxProps—

Form Methods (à appeler via ref) ​

Les appels via ref doivent attendre onReady

À l'étape onLoad, les composants enfants ne sont pas encore créés : formRef.value vaut undefined. L'événement de clic du bouton d'envoi se produit naturellement après onReady, il n'y a pas de problème ; mais pour un appel lors de l'initialisation de la page, placez-le dans onReady.

MéthodeDescriptionRenvoie
validateValide tous les champsPromise<boolean> (true si tout est valide)
validateFieldValide un seul champPromise<boolean>

FormItem Props ​

PropDescriptionTypeValeur par défaut
propNom de la clé du champ (correspond aux clés de model et de rules)string—
labelTexte du libelléstring—
requiredMarque de requis (affiche un astérisque ; la validation effective est décidée par rules)booleanfalse
rulesRègles propres à ce champ (fusionnées avec les rules de Form)LhFormRule[]>—
customClassNom de classe personnaliséstring—

Différences avec la version Vue3

  • Déclenchement de la validation : les contrôles du Mini Programme n'ont pas de sémantique change, chaque contrôle de formulaire mappe les événements blur / input sur les déclencheurs de validation.
  • Envoi du formulaire : la sémantique de formulaire du Mini Programme est différente, validate renvoie une Promise<boolean> pour un envoi manuel ; il n'y a pas d'interception de l'événement submit comme sur le web.