validator
validator copied to clipboard
add reflect struct field on validate error
add reflect on fields
use case: I've added reflect.StructField for using for getting a tag for using my own custom validate message and getting the field name from the language example use from my own project
type test struct {
Title string `validate:"required" json:"title" lang_key:"title"` // ex language of title = "banana"
}
s := test{}
err := validate.Struct(s)
if validate, ok := err.(*validator.InvalidValidationError); ok {
panic(validate)
}
errorsFields := make(map[string][]string, 0)
for _, validate := range err.(validator.ValidationErrors) {
fe := validate.ReflectStructField()
fieldName := strings.Replace(fe.Tag.Get("json"), ",omitempty", "", 0)
if _, ok := errorsFields[fieldName]; !ok {
errorsFields[fieldName] = make([]string, 0)
}
msg := ""
switch errTagName := validate.Tag(); errTagName {
case "regexp":
// format :"%s invalid format blablabla"
msg = i18n.ParseT(ct, "validator.regexp", i18n.ParseT(ct, "test."+fe.Tag.Get("lang_key"))) // banana invalid format blabla
}
errorsFields[fieldName] = append(errorsFields[fieldName], msg)
}
@go-playground/validator-maintainers
Coverage increased (+0.02%) to 74.202% when pulling 32d22f5237fc4e5326685b0b00e18d51ea211e46 on fullmoon-tech:reflex-struct-field into c7e0172e0fd176bdc521afb5186818a7db6b77ac on go-playground:master.
@ivybridge-3c33 I like the idea of grabbing struct field, I wonder if it might be confusing though for when the validation is not a struct field.
I wonder if there would be a way for it to work with struct fields and regular ones also?