diff --git a/util/gvalid/gvalid_check.go b/util/gvalid/gvalid_check.go index dc91abecd..50cfb609b 100644 --- a/util/gvalid/gvalid_check.go +++ b/util/gvalid/gvalid_check.go @@ -172,9 +172,8 @@ func doCheck(key string, value interface{}, rules string, messages interface{}, for index := 0; index < len(ruleItems); { var ( err error - item = ruleItems[index] match = false - results = ruleRegex.FindStringSubmatch(item) + results = ruleRegex.FindStringSubmatch(ruleItems[index]) ruleKey = strings.TrimSpace(results[1]) rulePattern = strings.TrimSpace(results[2]) ) @@ -191,7 +190,7 @@ func doCheck(key string, value interface{}, rules string, messages interface{}, if len(params) > 0 { dataMap = gconv.Map(params[0]) } - if err := f(value, message, dataMap); err != nil { + if err := f(ruleItems[index], value, message, dataMap); err != nil { match = false errorMsgArray[ruleKey] = err.Error() } else { diff --git a/util/gvalid/gvalid_custom_rule.go b/util/gvalid/gvalid_custom_rule.go index afc02591d..ffc2b0634 100644 --- a/util/gvalid/gvalid_custom_rule.go +++ b/util/gvalid/gvalid_custom_rule.go @@ -7,11 +7,12 @@ package gvalid // RuleFunc is the custom function for data validation. +// The parameter specifies the validation rule string, like "required", "between:1,100", etc. // The parameter specifies the value for this rule to validate. // The parameter specifies the custom error message or configured i18n message for this rule. // The parameter specifies all the parameters that needs. You can ignore parameter if // you do not really need it in your custom validation rule. -type RuleFunc func(value interface{}, message string, params map[string]interface{}) error +type RuleFunc func(rule string, value interface{}, message string, params map[string]interface{}) error var ( // customRuleFuncMap stores the custom rule functions. diff --git a/util/gvalid/gvalid_unit_custom_rule_test.go b/util/gvalid/gvalid_unit_custom_rule_test.go index e6740c2c2..d5a790e80 100644 --- a/util/gvalid/gvalid_unit_custom_rule_test.go +++ b/util/gvalid/gvalid_unit_custom_rule_test.go @@ -18,7 +18,7 @@ import ( func Test_CustomRule1(t *testing.T) { rule := "custom" - err := gvalid.RegisterRule(rule, func(value interface{}, message string, params map[string]interface{}) error { + err := gvalid.RegisterRule(rule, func(rule string, value interface{}, message string, params map[string]interface{}) error { pass := gconv.String(value) if len(pass) != 6 { return errors.New(message) @@ -65,7 +65,7 @@ func Test_CustomRule1(t *testing.T) { func Test_CustomRule2(t *testing.T) { rule := "required-map" - err := gvalid.RegisterRule(rule, func(value interface{}, message string, params map[string]interface{}) error { + err := gvalid.RegisterRule(rule, func(rule string, value interface{}, message string, params map[string]interface{}) error { m := gconv.Map(value) if len(m) == 0 { return errors.New(message) diff --git a/util/gvalid/gvalid_z_example_test.go b/util/gvalid/gvalid_z_example_test.go index 7d3a48aa8..fda12dad4 100644 --- a/util/gvalid/gvalid_z_example_test.go +++ b/util/gvalid/gvalid_z_example_test.go @@ -114,7 +114,7 @@ func ExampleCheckStruct3() { func ExampleRegisterRule() { rule := "unique-name" - gvalid.RegisterRule(rule, func(value interface{}, message string, params map[string]interface{}) error { + gvalid.RegisterRule(rule, func(rule string, value interface{}, message string, params map[string]interface{}) error { var ( id = gconv.Int(params["Id"]) name = gconv.String(value) @@ -146,7 +146,7 @@ func ExampleRegisterRule() { func ExampleRegisterRule_OverwriteRequired() { rule := "required" - gvalid.RegisterRule(rule, func(value interface{}, message string, params map[string]interface{}) error { + gvalid.RegisterRule(rule, func(rule string, value interface{}, message string, params map[string]interface{}) error { reflectValue := reflect.ValueOf(value) if reflectValue.Kind() == reflect.Ptr { reflectValue = reflectValue.Elem()