Logo

Champs disponibles

TextField
TextField::text

Champ texte simple — une ligne.

TextField::text("username").label("Nom d''utilisateur").required()
TextField::text

Champ texte simple — une ligne.

TextField::text("username").label("Nom d''utilisateur").required()
TextField::email

Email — converti en minuscules automatiquement.

TextField::email("email").label("Adresse email").required()
TextField::email

Email — converti en minuscules automatiquement.

TextField::email("email").label("Adresse email").required()
TextField::password

Mot de passe — haché via Argon2 par défaut. Désactiver avec .no_hash().

TextField::password("password").min_length(10, "10 caractères minimum").no_hash()
TextField::password

Mot de passe — haché via Argon2 par défaut. Désactiver avec .no_hash().

TextField::password("password").min_length(10, "10 caractères minimum").no_hash()
TextField::textarea

Zone de texte multi-ligne.

TextField::textarea("bio").label("Biographie").rows(5)
TextField::textarea

Zone de texte multi-ligne.

TextField::textarea("bio").label("Biographie").rows(5)
TextField::richtext

Texte riche — sanitisé côté serveur.

TextField::richtext("content").label("Contenu").required()
TextField::richtext

Texte riche — sanitisé côté serveur.

TextField::richtext("content").label("Contenu").required()
TextField::url

URL — validée côté serveur.

TextField::url("website").label("Site web")
TextField::url

URL — validée côté serveur.

TextField::url("website").label("Site web")
NumericField
NumericField::integer

Entier — validation min/max.

NumericField::integer("age").min(0.0, "Positif").max(120.0, "Max 120").label("Âge")
NumericField::integer

Entier — validation min/max.

NumericField::integer("age").min(0.0, "Positif").max(120.0, "Max 120").label("Âge")
NumericField::float

Nombre décimal.

NumericField::float("price").min(0.0, "Positif").label("Prix")
NumericField::float

Nombre décimal.

NumericField::float("price").min(0.0, "Positif").label("Prix")
NumericField::percent

Pourcentage — restreint entre 0 et 100.

NumericField::percent("discount").label("Réduction (%)")
NumericField::percent

Pourcentage — restreint entre 0 et 100.

NumericField::percent("discount").label("Réduction (%)")
NumericField::range

Curseur — min, max, valeur par défaut.

50
NumericField::range("volume", 0.0, 100.0, 50.0).label("Volume")
NumericField::range

Curseur — min, max, valeur par défaut.

50
NumericField::range("volume", 0.0, 100.0, 50.0).label("Volume")
BooleanField
BooleanField::new

Case à cocher — renvoie true/false.

BooleanField::new("accept").label("J''accepte les conditions").required()
BooleanField::new

Case à cocher — renvoie true/false.

BooleanField::new("accept").label("J''accepte les conditions").required()
BooleanField::radio

Bouton radio Oui/Non.

BooleanField::radio("newsletter").label("S''abonner").checked()
BooleanField::radio

Bouton radio Oui/Non.

BooleanField::radio("newsletter").label("S''abonner").checked()
ChoiceField
ChoiceField::new

Liste déroulante — options statiques ou dynamiques.

let opts = vec![ChoiceOption::new("fr", "France"), ChoiceOption::new("be", "Belgique")];
ChoiceField::new("country").label("Pays").choices(opts).required()
ChoiceField::new

Liste déroulante — options statiques ou dynamiques.

let opts = vec![ChoiceOption::new("fr", "France"), ChoiceOption::new("be", "Belgique")];
ChoiceField::new("country").label("Pays").choices(opts).required()
RadioField::new

Groupe de boutons radio.

RadioField::new("role").label("Rôle")
    .add_choice("admin", "Administrateur")
    .add_choice("user", "Utilisateur")
RadioField::new

Groupe de boutons radio.

RadioField::new("role").label("Rôle")
    .add_choice("admin", "Administrateur")
    .add_choice("user", "Utilisateur")
CheckboxField::new

Cases à cocher multiples — retourne Vec<String>.

CheckboxField::new("tags").label("Catégories")
    .add_choice("rust", "Rust").add_choice("web", "Web")
CheckboxField::new

Cases à cocher multiples — retourne Vec<String>.

CheckboxField::new("tags").label("Catégories")
    .add_choice("rust", "Rust").add_choice("web", "Web")
DateField
DateField::new

Date — format YYYY-MM-DD.

DateField::new("birth_date").label("Date de naissance").required()
DateField::new

Date — format YYYY-MM-DD.

DateField::new("birth_date").label("Date de naissance").required()
TimeField::new

Heure — format HH:MM.

TimeField::new("meeting_time").label("Heure du rendez-vous")
TimeField::new

Heure — format HH:MM.

TimeField::new("meeting_time").label("Heure du rendez-vous")
DateTimeField::new

Date et heure combinées.

DateTimeField::new("event_start").label("Début de l''événement").required()
DateTimeField::new

Date et heure combinées.

DateTimeField::new("event_start").label("Début de l''événement").required()
FileField
FileField::image

Image — jpg jpeg png gif webp avif. Validation dimensions possible.

FileField::image("avatar").upload_to("media/uploads").max_size_mb(5).max_dimensions(500, 500)
FileField::image

Image — jpg jpeg png gif webp avif. Validation dimensions possible.

FileField::image("avatar").upload_to("media/uploads").max_size_mb(5).max_dimensions(500, 500)
FileField::document

Document — pdf doc docx txt odt.

FileField::document("cv").upload_to("media/docs").max_size_mb(10).required()
FileField::document

Document — pdf doc docx txt odt.

FileField::document("cv").upload_to("media/docs").max_size_mb(10).required()
FileField::any

Tout type de fichier — extensions personnalisables.

FileField::any("data").allowed_extensions(vec!["csv", "json"]).upload_to("media/imports")
FileField::any

Tout type de fichier — extensions personnalisables.

FileField::any("data").allowed_extensions(vec!["csv", "json"]).upload_to("media/imports")
SpecialField
SlugField::new

Slug URL-friendly — validé côté serveur.

SlugField::new("slug").label("Slug").required()
SlugField::new

Slug URL-friendly — validé côté serveur.

SlugField::new("slug").label("Slug").required()
ColorField::new

Sélecteur de couleur hex.

ColorField::new("theme_color").label("Couleur").default_color("#3b82f6")
ColorField::new

Sélecteur de couleur hex.

ColorField::new("theme_color").label("Couleur").default_color("#3b82f6")
UUIDField::new

UUID — validé côté serveur.

UUIDField::new("ref_id").label("Référence").required()
UUIDField::new

UUID — validé côté serveur.

UUIDField::new("ref_id").label("Référence").required()
JSONField::new

Textarea JSON — validé côté serveur.

JSONField::new("config").label("Configuration JSON").rows(10)
JSONField::new

Textarea JSON — validé côté serveur.

JSONField::new("config").label("Configuration JSON").rows(10)
IPAddressField::new

Adresse IP — IPv4 ou IPv6.

IPAddressField::new("server_ip").label("IP serveur").ipv4_only().required()
IPAddressField::new

Adresse IP — IPv4 ou IPv6.

IPAddressField::new("server_ip").label("IP serveur").ipv4_only().required()
HiddenField
HiddenField::new

Champ caché — valeur soumise sans rendu visible.

<input type="hidden" value="..."> — invisible dans le rendu final
HiddenField::new("redirect_to")
HiddenField::new

Champ caché — valeur soumise sans rendu visible.

<input type="hidden" value="..."> — invisible dans le rendu final
HiddenField::new("redirect_to")