使用struct
type FriendlinkForm struct {
Id int64 `form:"-"`
Name string `form:"name"`
Logo string `form:"logo"`
Url string `form:"url"`
Sort int `form:"sort"`
// Url string `form:"url" valid:"Required"`
}
如果不需要自定义错误信息,可以直接在struct里验证,因为要使用自定义错误信息,所以我没有在struct中验证,而使用了自定义验证
func (form *FriendlinkForm) Validate() string {
validator := validation.Validation{}
validator.Required(form.Name, "名称").Message("不能为空")
validator.Required(form.Url, "链接").Message("不能为空")
validator.Min(form.Sort, 0, "排序").Message("必须是数字")
var errMessage = ""
isValid, err := validator.Valid(form)
if err != nil {
errMessage = "验证失败"
}
if !isValid {
for _, err := range validator.Errors {
errMessage += "<p>" + err.Key + ": " + err.Message + "</p>"
}
}
return errMessage
}
验证信息显示,在控制器中进行验证
err := form.Validate()
if err != "" {
flash.Set("validator", err)
flash.Store(&this.Controller)
this.Redirect(beego.URLFor("backend.FriendlinkController.Add"), 302)
return
}
显示模板,在模板中显示错误信息
{{if .flash.error}}
<div class="ty-flash-error">
{{.flash.error}}
</div>
{{end}}
{{if .flash.validator}}
<div class="ty-flash-error">
{{.flash.validator|str2html}}
</div>
{{end}}