Aller au contenu principal

Champ de saisie (Input)

Utilisez les champs de saisie pour collecter une information textuelle courte ou longue.

attention

Ce composant nécessite une licence Pro valide en production.

InformationValeur
NiveauPro
Composants Twigdsfr:input, dsfr:textarea

Usage

  • Le composant normalise les identifiants HTML.
  • Utilisez dsfr:textarea pour les contenus multi-lignes.

Modes d'utilisation

Champ de saisie · exemple principal
<twig:dsfr:input
id="email"
name="email"
type="email"
label="Adresse électronique"
hint="Format attendu : nom@example.fr"
/>
<twig:dsfr:textarea
id="message"
name="message"
label="Message"
rows="5"
/>

API publique

ComposantRôle
dsfr:inputComposant principal de cette page.
dsfr:textareaSous-composant public utilisable en composition Twig.

Configuration

OptionTypeDéfaut / requisValeurs et usage
idstringSelon composantIdentifiant HTML, normalisé et utilisé par aria-controls quand nécessaire.
labelstringRequisLibellé visible du contrôle.
typeenumtexttext, email, password, search, tel, url, number, date, time, month, week
name / value / placeholderstring|nullnullAttributs standards du champ.
hintstring|nullnullTexte d’aide DSFR.
errorstring|nullnullMessage d’erreur, active l’état erreur.
validstring|nullnullMessage de validation, active l’état valide.
requiredboolfalseRend le champ obligatoire côté HTML.
disabledboolfalseDésactive le contrôle. Accepte aussi 0/1 ou chaînes booléennes.
rowsint|string6 pour dsfr:textareaNombre de lignes pour la zone de texte.

Guide d'intégration

QuestionRéponse
Famille DSFRFormulaire
Quand l'utiliserQuand l’interface collecte, valide ou soumet une donnée utilisateur.
Quand éviterPour afficher une information non modifiable : préférez un composant de contenu ou de feedback.
API publiqueUtilisez uniquement les composants Twig listés sur cette page : dsfr:input, dsfr:textarea.
Documentation DSFRConsultez aussi la bibliothèque officielle : Système de Design de l'État.
Champ de saisie : composition Twig et données rows

Variantes de champ de saisie

  • types métier via type pour adapter le sens visuel et sémantique.
  • état désactivé avec disabled quand l’action existe mais n’est pas disponible.
  • états de validation avec error et valid, sans construire les classes à la main.

Points de contrôle propres à ce composant

  • Le composant normalise les identifiants HTML.
  • Utilisez dsfr:textarea pour les contenus multi-lignes.
  • Vérifiez un cas vide, un cas avec plusieurs entrées et un cas avec données dynamiques pour rows.
  • Testez la composition avec dsfr:textarea sans copier les templates internes.
  • Vérifiez les états erreur, succès et neutre avec les messages réellement liés au champ.

Accessibilité formulaire

  • Chaque champ doit avoir un label, legend ou titre de groupe compréhensible.
  • Les aides et erreurs doivent rester reliées au champ avec les identifiants générés.
  • Utilisez required, disabled, error et valid pour refléter le vrai statut métier.

Intégration Symfony/Twig pour dsfr:input

  • Passez rows avec la syntaxe : pour conserver le type tableau : :rows="rows".
  • Composez avec les sous-composants publics dsfr:textarea quand le rendu doit être plus précis que les props.
  • Ajoutez vos attributs applicatifs (data-controller, data-action, aria-*, class) sur dsfr:input quand ils concernent son nœud racine.
  • Gardez des id prévisibles pour dsfr:input, surtout dans les listes ou formulaires répétés.

Checklist de recette

  • label visible ou accessible
  • message erreur lu par technologie d’assistance
  • valeurs conservées après erreur de validation
  • rendu vérifié en thème clair et sombre ;
  • rendu vérifié sur mobile, tablette et desktop ;
  • aucune erreur dans le profiler DSFR ni dans l'inspecteur d'accessibilité du navigateur.

Erreurs fréquentes

SymptômeCorrection
Les données rows ne sont pas prises en compteAjoutez : devant la prop Twig : :rows.
Les classes DSFR semblent incomplètesUtilisez les props du composant plutôt que des classes ajoutées à la main.
Un panneau, menu ou état actif ne fonctionne pasVérifiez que le JavaScript DSFR est chargé et que les identifiants HTML sont uniques.
Le composant rend en local mais pas en productionVérifiez la licence avec php bin/console dsfr:license:validate.