在Web开发中对于这样的一个流程可能很眼熟:
在接收端,脚本必须:
尽管上面的过程并不是很复杂,但是通常情况下需要编写很多代码,而且为了显示错误信息,在网页中经常要使用多种不同的控制结构。创建表单验证虽简单,实施起来实在枯燥无味。
对于开发者来说,一般开发过程都是相当复杂,而且大多是在重复一样的工作。假设一个场景项目中忽然需要增加一个表单数据,那么局部代码的整个流程都需要修改。我们知道Go里面struct是常用的一个数据结构,因此beego的form采用了struct来处理表单信息。
首先定义一个开发Web应用时相对应的struct,一个字段对应一个form元素,通过struct的tag来定义相应的元素信息和验证信息,如下所示:
type User struct{ Username string `form:text,valid:required` Nickname string `form:text,valid:required` Age int `form:text,valid:required|numeric` Email string `form:text,valid:required|valid_email` Introduce string `form:textarea` }
定义好struct之后接下来在controller中这样操作
func (this *AddController) Get() { this.Data["form"] = beego.Form(&User{}) this.Layout = "admin/layout.html" this.TplNames = "admin/add.tpl" }
在模板中这样显示表单
<h1>New Blog Post</h1> <form action="" method="post"> {{.form.render()}} </form>
上面我们定义好了整个的第一步,从struct到显示表单的过程,接下来就是用户填写信息,服务器端接收数据然后验证,最后插入数据库。
func (this *AddController) Post() { var user User form := this.GetInput(&user) if !form.Validates() { return } models.UserInsert(&user) this.Ctx.Redirect(302, "/admin/index") }
以下列表列出来了对应的form元素信息:
以下列表将列出可被使用的原生规则
Copyright© 2013-2020
All Rights Reserved 京ICP备2023019179号-8