Categories: GoFrame 教程

GoFrame 数据校验-自定义错误

数据校验组件支持​i18n​特性,内部使用了​goframe​框架统一的​i18n​组件实现。默认使用默认的​i18n​单例对象,即​g.I18n()​对象。

配置示例

默认i18n错误提示

默认的英文国际化语言配置文件参考:https://github.com/gogf/gf/v2/tree/master/util/gvalid/i18n/en

中文错误提示

我们提供了建议的中文​i18n​国际化语言配置文件:https://github.com/gogf/gf/v2/tree/master/util/gvalid/i18n/cn 

默认 错误提示

当在​i18n​中找不到对应规则的错误提示时,将会使用​__default__​配置的错误提示信息。往往使用在自定义规则中。

开发示例

我们通过中间件统一设置请求的错误提示​i18n​语言。

目录结构

注意工程目录结构,以便于默认的​g.i18n()​对象能自动读取配置。有相当一部分同学倒在了这里

├── main.go
└── i18n
    ├── en.toml
    └── zh-CN.toml

i18n文件

en.toml

"ReuiredUserName" = "Please input user name"
"ReuiredUserType" = "Please select user type"

zh-CN.toml

"ReuiredUserName" = "请输入用户名称"
"ReuiredUserType" = "请选择用户类型"

示例代码

package main

import (
 "github.com/gogf/gf/v2/frame/g"
 "github.com/gogf/gf/v2/i18n/gi18n"
 "github.com/gogf/gf/v2/os/gctx"
 "github.com/gogf/gf/v2/util/gconv"
)

func main() {
 type User struct {
  Name string `v:"required#ReuiredUserName"`
  Type int    `v:"required#ReuiredUserType"`
 }
 var (
  ctx  = gctx.New()
  data = g.Map{
   "name": "john",
  }
  user  = User{}
  ctxEn = gi18n.WithLanguage(ctx, "en")
  ctxCh = gi18n.WithLanguage(ctx, "zh-CN")
 )

 if err := gconv.Scan(data, &user); err != nil {
  panic(err)
 }
 // 英文 
 if err := g.Validator().Assoc(data).Data(user).Run(ctxEn); err != nil {   
  g.Dump(err.String())
 }
 // 中文 
 if err := g.Validator().Assoc(data).Data(user).Run(ctxCh); err != nil {   
  g.Dump(err.String())
 }
}

执行后,终端输出:

Please select user type
请选择用户类型

andy

前端小白,在Web176教程网这个平台跟大家一起学习,加油!

Share
Published by
andy

Recent Posts

聊聊vue3中的defineProps

在Vue 3中,defineP…

1 周 ago

在 Chrome 中删除、允许和管理 Cookie

您可以选择删除现有 Cooki…

2 周 ago

自定义指令:聊聊vue中的自定义指令应用法则

今天我们来聊聊vue中的自定义…

3 周 ago

聊聊Vue中@click.stop和@click.prevent

一起来学下聊聊Vue中@cli…

4 周 ago

Nginx 基本操作:启动、停止、重启命令。

我们来学习Nginx基础操作:…

1 月 ago

Vue3:手动清理keep-alive组件缓存的方法

Vue3中手动清理keep-a…

1 月 ago