From 50a19bba1a2f3c48d5ea59de86d3ba3fdba01400 Mon Sep 17 00:00:00 2001 From: John Date: Thu, 10 May 2018 12:55:16 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E6=AD=A3gvalid.CheckMap=E5=BD=93?= =?UTF-8?q?=E4=BC=A0=E9=80=92=E7=9A=84params=E5=8F=82=E6=95=B0=E5=AF=B9?= =?UTF-8?q?=E5=BA=94rules=E7=9A=84=E9=94=AE=E5=80=BC=E5=AF=B9=E4=B8=BA?= =?UTF-8?q?=E7=A9=BA=E6=97=B6=E7=9A=84=E6=A0=A1=E9=AA=8C=E5=A4=B1=E6=95=88?= =?UTF-8?q?=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- g/util/gvalid/gvalid.go | 23 +++++++++++++---------- g/util/gvalid/gvalid_test.go | 1 + 2 files changed, 14 insertions(+), 10 deletions(-) diff --git a/g/util/gvalid/gvalid.go b/g/util/gvalid/gvalid.go index eab2aa76d..228c65afa 100644 --- a/g/util/gvalid/gvalid.go +++ b/g/util/gvalid/gvalid.go @@ -378,22 +378,25 @@ func checkSize(value, rulekey, ruleval string, cmsgs map[string]string) string { // 检测键值对参数Map,注意返回参数是一个2维的关联数组,第一维键名为参数键名,第二维为带有错误的校验规则名称,值为错误信息 func CheckMap(params map[string]interface{}, rules map[string]string, msgs...map[string]interface{}) map[string]map[string]string { + var value interface{} // 自定义消息,非必须参数,因此这里需要做判断 cmsgs := make(map[string]interface{}) if len(msgs) > 0 { cmsgs = msgs[0] } emsgs := make(map[string]map[string]string) - for key, value := range params { - if rule, ok := rules[key]; ok { - msg, _ := cmsgs[key] - if m := Check(value, rule, msg, params); m != nil { - if _, ok := emsgs[key]; !ok { - emsgs[key] = make(map[string]string) - } - for k, v := range m { - emsgs[key][k] = v - } + for key, rule := range rules { + value = nil + if v, ok := params[key]; ok { + value = v + } + msg, _ := cmsgs[key] + if m := Check(value, rule, msg, params); m != nil { + if _, ok := emsgs[key]; !ok { + emsgs[key] = make(map[string]string) + } + for k, v := range m { + emsgs[key][k] = v } } } diff --git a/g/util/gvalid/gvalid_test.go b/g/util/gvalid/gvalid_test.go index 82ebff6ac..b7230b459 100644 --- a/g/util/gvalid/gvalid_test.go +++ b/g/util/gvalid/gvalid_test.go @@ -5,6 +5,7 @@ // You can obtain one at https://gitee.com/johng/gf. // 单元测试 +// go test *.go -bench=".*" package gvalid_test