123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263 |
- package validate
- import (
- "reflect"
- "regexp"
- "strings"
- "github.com/gin-gonic/gin/binding"
- "github.com/go-playground/locales/zh"
- ut "github.com/go-playground/universal-translator"
- "github.com/go-playground/validator/v10"
- zh_translations "github.com/go-playground/validator/v10/translations/zh"
- )
- var (
- Uni *ut.UniversalTranslator
- Validate *validator.Validate
- Trans ut.Translator
- )
- func Setup() {
- zh := zh.New()
- Uni = ut.New(zh, zh)
- Trans, _ = Uni.GetTranslator("zh")
- // use origin
- // Validate = validator.New()
- // use gin built in
- Validate, _ = binding.Validator.Engine().(*validator.Validate)
- zh_translations.RegisterDefaultTranslations(Validate, Trans)
- Validate.RegisterTagNameFunc(func(fld reflect.StructField) string {
- name := fld.Tag.Get("label")
- return name
- })
- Validate.RegisterValidation("checkMobile", checkMobile)
- // customer error
- Validate.RegisterTranslation("checkMobile", Trans, func(ut ut.Translator) error {
- return ut.Add("checkMobile", "{0}格式错误!", true)
- }, func(ut ut.Translator, fe validator.FieldError) string {
- t, _ := ut.T("checkMobile", fe.Field())
- return t
- })
- }
- func Translate(errs validator.ValidationErrors) string {
- var errList []string
- for _, e := range errs {
- errList = append(errList, e.Translate(Trans))
- }
- return strings.Join(errList, "|")
- }
- func checkMobile(fl validator.FieldLevel) bool {
- mobile := fl.Field().String()
- regular := "^(1)\\d{10}$"
- r := regexp.MustCompile(regular)
- return r.MatchString(mobile)
- }
|