mirror of
https://github.com/astaxie/beego.git
synced 2024-12-23 15:50:49 +00:00
148 lines
2.6 KiB
Markdown
148 lines
2.6 KiB
Markdown
validation
|
|
==============
|
|
|
|
validation is a form validation for a data validation and error collecting using Go.
|
|
|
|
## Installation and tests
|
|
|
|
Install:
|
|
|
|
go get github.com/astaxie/beego/validation
|
|
|
|
Test:
|
|
|
|
go test github.com/astaxie/beego/validation
|
|
|
|
## Example
|
|
|
|
Direct Use:
|
|
|
|
import (
|
|
"github.com/astaxie/beego/validation"
|
|
"log"
|
|
)
|
|
|
|
type User struct {
|
|
Name string
|
|
Age int
|
|
}
|
|
|
|
func main() {
|
|
u := User{"man", 40}
|
|
valid := validation.Validation{}
|
|
valid.Required(u.Name, "name")
|
|
valid.MaxSize(u.Name, 15, "nameMax")
|
|
valid.Range(u.Age, 0, 140, "age")
|
|
if valid.HasErrors() {
|
|
// validation does not pass
|
|
// print invalid message
|
|
for _, err := range valid.Errors {
|
|
log.Println(err.Key, err.Message)
|
|
}
|
|
}
|
|
// or use like this
|
|
if v := valid.Max(u.Age, 140, "ageMax"); !v.Ok {
|
|
log.Println(v.Error.Key, v.Error.Message)
|
|
}
|
|
}
|
|
|
|
Struct Tag Use:
|
|
|
|
import (
|
|
"github.com/astaxie/beego/validation"
|
|
)
|
|
|
|
// validation function follow with "valid" tag
|
|
// functions divide with ";"
|
|
// parameters in parentheses "()" and divide with ","
|
|
// Match function's pattern string must in "//"
|
|
type user struct {
|
|
Id int
|
|
Name string `valid:"Required;Match(/^(test)?\\w*@;com$/)"`
|
|
Age int `valid:"Required;Range(1, 140)"`
|
|
}
|
|
|
|
func main() {
|
|
valid := validation.Validation{}
|
|
// ignore empty field valid
|
|
// see CanSkipFuncs
|
|
// valid := validation.Validation{RequiredFirst:true}
|
|
u := user{Name: "test", Age: 40}
|
|
b, err := valid.Valid(u)
|
|
if err != nil {
|
|
// handle error
|
|
}
|
|
if !b {
|
|
// validation does not pass
|
|
// blabla...
|
|
}
|
|
}
|
|
|
|
Use custom function:
|
|
|
|
import (
|
|
"github.com/astaxie/beego/validation"
|
|
)
|
|
|
|
type user struct {
|
|
Id int
|
|
Name string `valid:"Required;IsMe"`
|
|
Age int `valid:"Required;Range(1, 140)"`
|
|
}
|
|
|
|
func IsMe(v *validation.Validation, obj interface{}, key string) {
|
|
name, ok:= obj.(string)
|
|
if !ok {
|
|
// wrong use case?
|
|
return
|
|
}
|
|
|
|
if name != "me" {
|
|
// valid false
|
|
v.SetError("Name", "is not me!")
|
|
}
|
|
}
|
|
|
|
func main() {
|
|
valid := validation.Validation{}
|
|
if err := validation.AddCustomFunc("IsMe", IsMe); err != nil {
|
|
// hadle error
|
|
}
|
|
u := user{Name: "test", Age: 40}
|
|
b, err := valid.Valid(u)
|
|
if err != nil {
|
|
// handle error
|
|
}
|
|
if !b {
|
|
// validation does not pass
|
|
// blabla...
|
|
}
|
|
}
|
|
|
|
Struct Tag Functions:
|
|
|
|
Required
|
|
Min(min int)
|
|
Max(max int)
|
|
Range(min, max int)
|
|
MinSize(min int)
|
|
MaxSize(max int)
|
|
Length(length int)
|
|
Alpha
|
|
Numeric
|
|
AlphaNumeric
|
|
Match(pattern string)
|
|
AlphaDash
|
|
Email
|
|
IP
|
|
Base64
|
|
Mobile
|
|
Tel
|
|
Phone
|
|
ZipCode
|
|
|
|
|
|
## LICENSE
|
|
|
|
BSD License http://creativecommons.org/licenses/BSD/
|