You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

49 lines
909 B

1 month ago
package dapi
import (
"github.com/go-playground/validator/v10"
"reflect"
"strings"
)
type ValidError struct {
Key string
Message string
}
type ValidErrors []*ValidError
func (v *ValidError) Error() string {
return v.Message
}
func (v ValidErrors) Error() string {
return strings.Join(v.Errors(), ",")
}
func (v ValidErrors) Errors() []string {
var errs []string
for _, err := range v {
errs = append(errs, err.Error())
}
return errs
}
func ValidateField(usr interface{}, f func(typeOfCat reflect.Type, fieldName string)) {
validate := validator.New()
typeOfCat := reflect.TypeOf(usr)
if typeOfCat.Kind() == reflect.Ptr {
//err = err.Elem
typeOfCat = typeOfCat.Elem()
}
err := validate.Struct(usr)
if err != nil {
for _, err := range err.(validator.ValidationErrors) {
fieldName := err.Field() //获取是哪个字段不合乎格局
f(typeOfCat, fieldName)
}
}
}