package core import ( "github.com/go-playground/locales/zh" ut "github.com/go-playground/universal-translator" "github.com/go-playground/validator/v10" zhTranslations "github.com/go-playground/validator/v10/translations/zh" "reflect" "vote-api/global" "vote-api/utils" ) // Validator 验证器 func Validator() { chzh := zh.New() uni := ut.New(chzh, chzh) global.Trans, _ = uni.GetTranslator("zh") global.Validate = validator.New() // 通过label标签返回自定义错误内容 global.Validate.RegisterTagNameFunc(func(field reflect.StructField) string { label := field.Tag.Get("label") if label == "" { return field.Name } return label }) _ = zhTranslations.RegisterDefaultTranslations(global.Validate, global.Trans) // 注册自定义函数和标签 // 手机号验证 _ = global.Validate.RegisterValidation("Mobile", mobile) // 注册自定义函数,前一个参数是struct里tag自定义,后一个参数是自定义的函数 // 自定义required错误内容 _ = global.Validate.RegisterTranslation("required", global.Trans, func(ut ut.Translator) error { return ut.Add("required", "{0}为必填字段!", false) // see universal-translator for details }, func(ut ut.Translator, fe validator.FieldError) string { t, _ := ut.T("required", fe.Field()) return t }) // 自定义max错误内容 _ = global.Validate.RegisterTranslation("max", global.Trans, func(ut ut.Translator) error { return ut.Add("max", "{0}超出最大长度", false) // see universal-translator for details }, func(ut ut.Translator, fe validator.FieldError) string { t, _ := ut.T("max", fe.Field()) return t }) // 自定义min错误内容 _ = global.Validate.RegisterTranslation("min", global.Trans, func(ut ut.Translator) error { return ut.Add("min", "{0}超出最小长度", false) // see universal-translator for details }, func(ut ut.Translator, fe validator.FieldError) string { t, _ := ut.T("min", fe.Field()) return t }) // 自定义lt错误内容 _ = global.Validate.RegisterTranslation("lt", global.Trans, func(ut ut.Translator) error { return ut.Add("lt", "{0}超出最大值", false) // see universal-translator for details }, func(ut ut.Translator, fe validator.FieldError) string { t, _ := ut.T("lt", fe.Field()) return t }) // 自定义min错误内容 _ = global.Validate.RegisterTranslation("gt", global.Trans, func(ut ut.Translator) error { return ut.Add("gt", "{0}不满足最小值", false) // see universal-translator for details }, func(ut ut.Translator, fe validator.FieldError) string { t, _ := ut.T("gt", fe.Field()) return t }) // 自定义email错误内容 _ = global.Validate.RegisterTranslation("email", global.Trans, func(ut ut.Translator) error { return ut.Add("email", "{0}邮件格式错误", false) // see universal-translator for details }, func(ut ut.Translator, fe validator.FieldError) string { t, _ := ut.T("email", fe.Field()) return t }) // 自定义mobile错误内容 _ = global.Validate.RegisterTranslation("Mobile", global.Trans, func(ut ut.Translator) error { return ut.Add("mobile", "手机号格式错误", false) // see universal-translator for details }, func(ut ut.Translator, fe validator.FieldError) string { t, _ := ut.T("mobile", fe.Field()) return t }) } // 自定义手机号验证 func mobile(fl validator.FieldLevel) bool { return utils.RegexpMobile(fl.Field().String()) }