mirror of
https://gitee.com/johng/gf
synced 2026-06-07 02:12:11 +08:00
gvalid增加字段校验别名,用于自定义返回结果字段,并更新WebServer中相关使用的模块
This commit is contained in:
@ -436,13 +436,23 @@ func CheckStruct(st interface{}, rules map[string]string, msgs...map[string]inte
|
||||
for _, field := range fields {
|
||||
params[field.Name()] = field.Value()
|
||||
if tag := field.Tag("gvalid"); tag != "" {
|
||||
match, _ := gregex.MatchString(`([^#]+)#{0,1}(.*)`, tag)
|
||||
match, _ := gregex.MatchString(`\s*((\w+)\s*@){0,1}\s*([^#]+)\s*(#\s*(.*)){0,1}\s*`, tag)
|
||||
name := match[2]
|
||||
rule := match[3]
|
||||
msg := match[5]
|
||||
if len(name) == 0 {
|
||||
name = field.Name()
|
||||
}
|
||||
// params参数使用别名**扩容**(而不仅仅使用别名),仅用于验证使用
|
||||
if _, ok := params[name]; !ok {
|
||||
params[name] = field.Value()
|
||||
}
|
||||
// 校验规则
|
||||
if _, ok := rules[field.Name()]; !ok {
|
||||
rules[field.Name()] = match[1]
|
||||
if _, ok := rules[name]; !ok {
|
||||
rules[name] = rule
|
||||
}
|
||||
// 错误提示
|
||||
if match[2] != "" {
|
||||
if len(msg) > 0 {
|
||||
ruleArray := strings.Split(match[1], "|")
|
||||
msgArray := strings.Split(match[2], "|")
|
||||
for k, v := range ruleArray {
|
||||
@ -457,6 +467,7 @@ func CheckStruct(st interface{}, rules map[string]string, msgs...map[string]inte
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
return CheckMap(params, rules, errMsgs)
|
||||
}
|
||||
|
||||
@ -9,10 +9,10 @@ import (
|
||||
|
||||
func main() {
|
||||
type User struct {
|
||||
Uid int `gvalid:"min:1"`
|
||||
Name string `params:"username" gvalid:"required|length:6,30"`
|
||||
Pass1 string `params:"password1,userpass1" gvalid:"required|password3"`
|
||||
Pass2 string `params:"password3,userpass2" gvalid:"required|password3|same:Pass1#||两次密码不一致,请重新输入"`
|
||||
Uid int `gvalid:"uid@min:1"`
|
||||
Name string `params:"username" gvalid:"username @required|length:6,30"`
|
||||
Pass1 string `params:"password1" gvalid:"password1@required|password3"`
|
||||
Pass2 string `params:"password2" gvalid:"password2@required|password3|same:password1#||两次密码不一致,请重新输入"`
|
||||
}
|
||||
|
||||
s := g.Server()
|
||||
|
||||
@ -1,9 +1,16 @@
|
||||
package main
|
||||
|
||||
import (
|
||||
"gitee.com/johng/gf/g/util/gregex"
|
||||
"fmt"
|
||||
"gitee.com/johng/gf/g/util/gutil"
|
||||
)
|
||||
|
||||
|
||||
|
||||
func main() {
|
||||
fmt.Println(1)
|
||||
s := `username @ required|length:6,30 # 请输入用户名称|用户名称长度非法`
|
||||
match, err := gregex.MatchString(`\s*((\w+)\s*@){0,1}\s*([^#]+)\s*(#\s*(.*)){0,1}\s*`, s)
|
||||
fmt.Println(err)
|
||||
gutil.Dump(match)
|
||||
}
|
||||
@ -6,10 +6,10 @@ import (
|
||||
)
|
||||
|
||||
type User struct {
|
||||
Uid int `gvalid:"integer|min:1"`
|
||||
Name string `gvalid:"required|length:6,30#请输入用户名称|用户名称长度非法"`
|
||||
Pass1 string `gvalid:"required|password3"`
|
||||
Pass2 string `gvalid:"required|password3|same:Pass1#||两次密码不一致,请重新输入"`
|
||||
Uid int `gvalid:"uid @integer|min:1"`
|
||||
Name string `gvalid:"name @required|length:6,30#请输入用户名称|用户名称长度非法"`
|
||||
Pass1 string `gvalid:"password1@required|password3"`
|
||||
Pass2 string `gvalid:"password2@required|password3|same:password1#||两次密码不一致,请重新输入"`
|
||||
}
|
||||
|
||||
func main() {
|
||||
|
||||
Reference in New Issue
Block a user