From c3aa421c9850d98c4e1169dff267731062f50c98 Mon Sep 17 00:00:00 2001 From: john Date: Fri, 17 Aug 2018 16:47:55 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E5=A4=8Dgvalid.CheckStruct=E8=87=AA?= =?UTF-8?q?=E5=AE=9A=E4=B9=89=E9=94=99=E8=AF=AF=E6=8F=90=E7=A4=BA=E5=A4=B1?= =?UTF-8?q?=E6=95=88=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- g/net/ghttp/ghttp_server_router.go | 16 ++++++++++++---- g/util/gvalid/gvalid.go | 10 +++++----- geg/util/gvalid/gvalid_struct.go | 2 +- 3 files changed, 18 insertions(+), 10 deletions(-) diff --git a/g/net/ghttp/ghttp_server_router.go b/g/net/ghttp/ghttp_server_router.go index e7420e195..b144461fa 100644 --- a/g/net/ghttp/ghttp_server_router.go +++ b/g/net/ghttp/ghttp_server_router.go @@ -196,11 +196,19 @@ func (s *Server) patternToRegRule(rule string) (regrule string, names []string) } switch v[0] { case ':': - regrule += `/([\w\.\-]+)` - names = append(names, v[1:]) + if len(v) > 1 { + regrule += `/([\w\.\-]+)` + names = append(names, v[1:]) + break + } + fallthrough case '*': - regrule += `/{0,1}(.*)` - names = append(names, v[1:]) + if len(v) > 1 { + regrule += `/{0,1}(.*)` + names = append(names, v[1:]) + break + } + fallthrough default: // 特殊字符替换 v = gstr.ReplaceByMap(v, map[string]string{ diff --git a/g/util/gvalid/gvalid.go b/g/util/gvalid/gvalid.go index 174d93eb4..b28e8ce22 100644 --- a/g/util/gvalid/gvalid.go +++ b/g/util/gvalid/gvalid.go @@ -453,17 +453,17 @@ func CheckStruct(st interface{}, rules map[string]string, msgs...map[string]inte } // 错误提示 if len(msg) > 0 { - ruleArray := strings.Split(match[1], "|") - msgArray := strings.Split(match[2], "|") + ruleArray := strings.Split(rule, "|") + msgArray := strings.Split(msg, "|") for k, v := range ruleArray { if len(msgArray[k]) == 0 { continue } array := strings.Split(v, ":") - if _, ok := errMsgs[field.Name()]; !ok { - errMsgs[field.Name()] = make(map[string]string) + if _, ok := errMsgs[name]; !ok { + errMsgs[name] = make(map[string]string) } - errMsgs[field.Name()].(map[string]string)[array[0]] = msgArray[k] + errMsgs[name].(map[string]string)[array[0]] = msgArray[k] } } } diff --git a/geg/util/gvalid/gvalid_struct.go b/geg/util/gvalid/gvalid_struct.go index 4d3ead963..e1d66ef1c 100644 --- a/geg/util/gvalid/gvalid_struct.go +++ b/geg/util/gvalid/gvalid_struct.go @@ -21,7 +21,7 @@ func main() { // 使用结构体定义的校验规则和错误提示进行校验 gutil.Dump(gvalid.CheckStruct(user, nil)) - +return // 自定义校验规则和错误提示,对定义的特定校验规则和错误提示进行覆盖 rules := map[string]string { "Uid" : "required",