Make `required_without` work with pointer

Fix #483, #473
pull/484/head
Zuyang Kou 6 years ago
parent 884d31b8ca
commit 54db112759
  1. 6
      baked_in.go
  2. 2
      validator_test.go

@ -1308,7 +1308,11 @@ func hasValue(fl FieldLevel) bool {
func requireCheckFieldKind(fl FieldLevel, param string) bool { func requireCheckFieldKind(fl FieldLevel, param string) bool {
field := fl.Field() field := fl.Field()
if len(param) > 0 { if len(param) > 0 {
field = fl.Parent().FieldByName(param) if fl.Parent().Kind() == reflect.Ptr {
field = fl.Parent().Elem().FieldByName(param)
} else {
field = fl.Parent().FieldByName(param)
}
} }
switch field.Kind() { switch field.Kind() {
case reflect.Slice, reflect.Map, reflect.Ptr, reflect.Interface, reflect.Chan, reflect.Func: case reflect.Slice, reflect.Map, reflect.Ptr, reflect.Interface, reflect.Chan, reflect.Func:

@ -8712,7 +8712,7 @@ func TestRequiredWithout(t *testing.T) {
Field5: "test", Field5: "test",
} }
errs = validate.Struct(test2) errs = validate.Struct(&test2)
if errs == nil { if errs == nil {
t.Fatalf("failed Error: %s", errs) t.Fatalf("failed Error: %s", errs)

Loading…
Cancel
Save