代码拉取完成,页面将自动刷新
/**
* @User: rysa
* @Created:2021/2/7 10:04 下午
* @File: validator
* @Desc:
*/
package go_utils
import (
"errors"
"fmt"
"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"
)
// 表单验证
// https://github.com/go-playground/validator
var (
uni *ut.UniversalTranslator
Validate *validator.Validate
ValidateTrans ut.Translator
)
func init() {
zh2 := zh.New()
uni = ut.New(zh2, zh2)
ValidateTrans, _ = uni.GetTranslator("zh")
Validate = validator.New()
// 收集结构体中的comment标签,用于替换英文字段名称,这样返回错误就能展示中文字段名称了
Validate.RegisterTagNameFunc(func(fld reflect.StructField) string {
return fld.Tag.Get("comment")
})
if err := zhtranslations.RegisterDefaultTranslations(Validate, ValidateTrans); err != nil {
fmt.Println(fmt.Sprintf("RegisterDefaultTranslations %v", err))
}
}
func ValidateStruct(s interface{}) error {
err := Validate.Struct(s)
if err != nil {
errs := err.(validator.ValidationErrors)
for _, e := range errs.Translate(ValidateTrans) {
if len(e) > 0 {
return errors.New(e)
}
}
}
return nil
}
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。