Champ texte simple — une ligne.
TextField::text("username").label("Nom d''utilisateur").required()
TextField::textChamp texte simple — une ligne.
TextField::text("username").label("Nom d''utilisateur").required()
TextField::textChamp texte simple — une ligne.
TextField::text("username").label("Nom d''utilisateur").required()
TextField::emailEmail — converti en minuscules automatiquement.
TextField::email("email").label("Adresse email").required()
TextField::emailEmail — converti en minuscules automatiquement.
TextField::email("email").label("Adresse email").required()
TextField::passwordMot 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::passwordMot 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::textareaZone de texte multi-ligne.
TextField::textarea("bio").label("Biographie").rows(5)
TextField::textareaZone de texte multi-ligne.
TextField::textarea("bio").label("Biographie").rows(5)
TextField::richtextTexte riche — sanitisé côté serveur.
TextField::richtext("content").label("Contenu").required()
TextField::richtextTexte riche — sanitisé côté serveur.
TextField::richtext("content").label("Contenu").required()
TextField::urlURL — validée côté serveur.
TextField::url("website").label("Site web")
TextField::urlURL — validée côté serveur.
TextField::url("website").label("Site web")
NumericField::integerEntier — validation min/max.
NumericField::integer("age").min(0.0, "Positif").max(120.0, "Max 120").label("Âge")
NumericField::integerEntier — validation min/max.
NumericField::integer("age").min(0.0, "Positif").max(120.0, "Max 120").label("Âge")
NumericField::floatNombre décimal.
NumericField::float("price").min(0.0, "Positif").label("Prix")
NumericField::floatNombre décimal.
NumericField::float("price").min(0.0, "Positif").label("Prix")
NumericField::percentPourcentage — restreint entre 0 et 100.
NumericField::percent("discount").label("Réduction (%)")
NumericField::percentPourcentage — restreint entre 0 et 100.
NumericField::percent("discount").label("Réduction (%)")
NumericField::rangeCurseur — min, max, valeur par défaut.
NumericField::range("volume", 0.0, 100.0, 50.0).label("Volume")
NumericField::rangeCurseur — min, max, valeur par défaut.
NumericField::range("volume", 0.0, 100.0, 50.0).label("Volume")
BooleanField::newCase à cocher — renvoie true/false.
BooleanField::new("accept").label("J''accepte les conditions").required()
BooleanField::newCase à cocher — renvoie true/false.
BooleanField::new("accept").label("J''accepte les conditions").required()
BooleanField::radioBouton radio Oui/Non.
BooleanField::radio("newsletter").label("S''abonner").checked()
BooleanField::radioBouton radio Oui/Non.
BooleanField::radio("newsletter").label("S''abonner").checked()
ChoiceField::newListe 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::newListe 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::newGroupe de boutons radio.
RadioField::new("role").label("Rôle")
.add_choice("admin", "Administrateur")
.add_choice("user", "Utilisateur")
RadioField::newGroupe de boutons radio.
RadioField::new("role").label("Rôle")
.add_choice("admin", "Administrateur")
.add_choice("user", "Utilisateur")
CheckboxField::newCases à cocher multiples — retourne Vec<String>.
CheckboxField::new("tags").label("Catégories")
.add_choice("rust", "Rust").add_choice("web", "Web")
CheckboxField::newCases à cocher multiples — retourne Vec<String>.
CheckboxField::new("tags").label("Catégories")
.add_choice("rust", "Rust").add_choice("web", "Web")
DateField::newDate — format YYYY-MM-DD.
DateField::new("birth_date").label("Date de naissance").required()
DateField::newDate — format YYYY-MM-DD.
DateField::new("birth_date").label("Date de naissance").required()
TimeField::newHeure — format HH:MM.
TimeField::new("meeting_time").label("Heure du rendez-vous")
TimeField::newHeure — format HH:MM.
TimeField::new("meeting_time").label("Heure du rendez-vous")
DateTimeField::newDate et heure combinées.
DateTimeField::new("event_start").label("Début de l''événement").required()
DateTimeField::newDate et heure combinées.
DateTimeField::new("event_start").label("Début de l''événement").required()
FileField::imageImage — 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::imageImage — 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::documentDocument — pdf doc docx txt odt.
FileField::document("cv").upload_to("media/docs").max_size_mb(10).required()
FileField::documentDocument — pdf doc docx txt odt.
FileField::document("cv").upload_to("media/docs").max_size_mb(10).required()
FileField::anyTout type de fichier — extensions personnalisables.
FileField::any("data").allowed_extensions(vec!["csv", "json"]).upload_to("media/imports")
FileField::anyTout type de fichier — extensions personnalisables.
FileField::any("data").allowed_extensions(vec!["csv", "json"]).upload_to("media/imports")
SlugField::newSlug URL-friendly — validé côté serveur.
SlugField::new("slug").label("Slug").required()
SlugField::newSlug URL-friendly — validé côté serveur.
SlugField::new("slug").label("Slug").required()
ColorField::newSélecteur de couleur hex.
ColorField::new("theme_color").label("Couleur").default_color("#3b82f6")
ColorField::newSélecteur de couleur hex.
ColorField::new("theme_color").label("Couleur").default_color("#3b82f6")
UUIDField::newUUID — validé côté serveur.
UUIDField::new("ref_id").label("Référence").required()
UUIDField::newUUID — validé côté serveur.
UUIDField::new("ref_id").label("Référence").required()
JSONField::newTextarea JSON — validé côté serveur.
JSONField::new("config").label("Configuration JSON").rows(10)
JSONField::newTextarea JSON — validé côté serveur.
JSONField::new("config").label("Configuration JSON").rows(10)
IPAddressField::newAdresse IP — IPv4 ou IPv6.
IPAddressField::new("server_ip").label("IP serveur").ipv4_only().required()
IPAddressField::newAdresse IP — IPv4 ou IPv6.
IPAddressField::new("server_ip").label("IP serveur").ipv4_only().required()