定义 struct:
type User struct { Id int `form:"-"` Name interface{} `form:"username"` Age int `form:"age,text,年龄:"` Sex string Intro string `form:",textarea"`}
- StructTag 的定义用的标签用为 form,标签后面有三个可选参数,用 , 分割。第一个参数为表单中类型的 name 的值,如果为空,则以 struct field name 为值。第二个参数为表单组件的类型,如果为空,则为 text。表单组件的标签默认为 struct field name 的值,否则为第三个值。
- 如果 form 标签只有一个值,则为表单中类型 name 的值,除了最后一个值可以忽略外,其他位置的必须要有 , 号分割,如:form:",,姓名:"
- 如果要忽略一个字段,有两种办法,一是:字段名小写开头,二是:form 标签的值设置为 -
- 现在的代码版本只能实现固定的格式,用 br 标签实现换行,无法实现 css 和 class 等代码的插入。所以,要实现 form 的高级排版,不能使用 renderform 的方法,而需要手动处理每一个字段。
controller:
func (this *AddController) Get() { this.Data["Form"] = &User{} this.TplName = "index.tpl"}
Form 的参数必须是一个 struct 的指针。
template:
上面的代码生成的表单为:
Name: 年龄: Sex: Intro: