3 个版本
0.0.4 | 2024年2月22日 |
---|---|
0.0.3 | 2024年2月19日 |
0.0.1 | 2023年10月24日 |
#78 在 #title
每月 77 次下载
在 rooting-forms 中使用
22KB
405 代码行
此工具提供了特性和一个 derive 宏,用于从结构体和枚举生成根 HTML 表单。
示例
#[derive(rooting_forms::Form)]
struct Creds {
#[title("Your username")]
username: String,
#[title("Your password")]
password: rooting_forms::Password,
}
...
let ok_button = el("button").text("Ok");
let (creds_form, creds_form_state) = Creds::new_form("", None);
ok_button.ref_on("click", move |_| {
let Ok(creds) = creds_form_state.parse() else {
return;
};
do_login(creds);
});
let modal =
el(
"div",
).extend(vec![el("div").classes(&["form_grid"]).extend(creds_form.elements), ok_button]);
...
创建一个表单
在您的表单类型上调用 ::new_form
。第一个参数可以是空的(用于嵌套字段的 aria 提示,但不用于顶层结构体)。第二个参数是 Some
,如果您想从现有数据预先填充表单,例如在编辑某些内容时。
new_form
返回表单 rooting::El
元素和一个状态对象。
在状态对象上多次调用 parse()
。它将返回解析的对象或一个空的错误。任何错误消息都将自动放入相关表单字段附近的错误元素中。错误消息将在下一个 parse()
调用中清除。
依赖项
~1.5MB
~39K SLoC