GoFrame 數(shù)據(jù)校驗-自定義錯誤

2022-03-30 14:19 更新

數(shù)據(jù)校驗組件支持?i18n?特性,內(nèi)部使用了?goframe?框架統(tǒng)一的?i18n?組件實現(xiàn)。默認使用默認的?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?中找不到對應規(guī)則的錯誤提示時,將會使用?__default__?配置的錯誤提示信息。往往使用在自定義規(guī)則中。

開發(fā)示例

我們通過中間件統(tǒng)一設(shè)置請求的錯誤提示?i18n?語言。

目錄結(jié)構(gòu)

注意工程目錄結(jié)構(gòu),以便于默認的?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())
	}
}

執(zhí)行后,終端輸出:

Please select user type
請選擇用戶類型


以上內(nèi)容是否對您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號
微信公眾號

編程獅公眾號