README.md
1validation
2==============
3
4validation is a form validation for a data validation and error collecting using Go.
5
6## Installation and tests
7
8Install:
9
10 go get github.com/astaxie/beego/validation
11
12Test:
13
14 go test github.com/astaxie/beego/validation
15
16## Example
17
18Direct Use:
19
20 import (
21 "github.com/astaxie/beego/validation"
22 "log"
23 )
24
25 type User struct {
26 Name string
27 Age int
28 }
29
30 func main() {
31 u := User{"man", 40}
32 valid := validation.Validation{}
33 valid.Required(u.Name, "name")
34 valid.MaxSize(u.Name, 15, "nameMax")
35 valid.Range(u.Age, 0, 140, "age")
36 if valid.HasErrors() {
37 // validation does not pass
38 // print invalid message
39 for _, err := range valid.Errors {
40 log.Println(err.Key, err.Message)
41 }
42 }
43 // or use like this
44 if v := valid.Max(u.Age, 140, "ageMax"); !v.Ok {
45 log.Println(v.Error.Key, v.Error.Message)
46 }
47 }
48
49Struct Tag Use:
50
51 import (
52 "github.com/astaxie/beego/validation"
53 )
54
55 // validation function follow with "valid" tag
56 // functions divide with ";"
57 // parameters in parentheses "()" and divide with ","
58 // Match function's pattern string must in "//"
59 type user struct {
60 Id int
61 Name string `valid:"Required;Match(/^(test)?\\w*@;com$/)"`
62 Age int `valid:"Required;Range(1, 140)"`
63 }
64
65 func main() {
66 valid := validation.Validation{}
67 // ignore empty field valid
68 // see CanSkipFuncs
69 // valid := validation.Validation{RequiredFirst:true}
70 u := user{Name: "test", Age: 40}
71 b, err := valid.Valid(u)
72 if err != nil {
73 // handle error
74 }
75 if !b {
76 // validation does not pass
77 // blabla...
78 }
79 }
80
81Use custom function:
82
83 import (
84 "github.com/astaxie/beego/validation"
85 )
86
87 type user struct {
88 Id int
89 Name string `valid:"Required;IsMe"`
90 Age int `valid:"Required;Range(1, 140)"`
91 }
92
93 func IsMe(v *validation.Validation, obj interface{}, key string) {
94 name, ok:= obj.(string)
95 if !ok {
96 // wrong use case?
97 return
98 }
99
100 if name != "me" {
101 // valid false
102 v.SetError("Name", "is not me!")
103 }
104 }
105
106 func main() {
107 valid := validation.Validation{}
108 if err := validation.AddCustomFunc("IsMe", IsMe); err != nil {
109 // hadle error
110 }
111 u := user{Name: "test", Age: 40}
112 b, err := valid.Valid(u)
113 if err != nil {
114 // handle error
115 }
116 if !b {
117 // validation does not pass
118 // blabla...
119 }
120 }
121
122Struct Tag Functions:
123
124 Required
125 Min(min int)
126 Max(max int)
127 Range(min, max int)
128 MinSize(min int)
129 MaxSize(max int)
130 Length(length int)
131 Alpha
132 Numeric
133 AlphaNumeric
134 Match(pattern string)
135 AlphaDash
136 Email
137 IP
138 Base64
139 Mobile
140 Tel
141 Phone
142 ZipCode
143
144
145## LICENSE
146
147BSD License http://creativecommons.org/licenses/BSD/
148