W3Cschool
恭喜您成為首批注冊(cè)用戶
獲得88經(jīng)驗(yàn)值獎(jiǎng)勵(lì)
數(shù)據(jù)校驗(yàn)組件提供了數(shù)據(jù)校驗(yàn)對(duì)象,用于數(shù)據(jù)校驗(yàn)的統(tǒng)一的配置管理、便捷的鏈?zhǔn)讲僮鳌?
接口文檔: https://pkg.go.dev/github.com/gogf/gf/v2/util/gvalid
type Validator
func New() *Validator
func (v *Validator) Assoc(assoc interface{}) *Validator
func (v *Validator) Bail() *Validator
func (v *Validator) Ci() *Validator
func (v *Validator) Clone() *Validator
func (v *Validator) Data(data interface{}) *Validator
func (v *Validator) I18n(i18nManager *gi18n.Manager) *Validator
func (v *Validator) Messages(messages interface{}) *Validator
func (v *Validator) RuleFunc(rule string, f RuleFunc) *Validator
func (v *Validator) RuleFuncMap(m map[string]RuleFunc) *Validator
func (v *Validator) Rules(rules interface{}) *Validator
func (v *Validator) Run(ctx context.Context) Error
簡(jiǎn)要說(shuō)明:
New
?方法用于創(chuàng)建一個(gè)新的校驗(yàn)對(duì)象。
Assoc
?用于關(guān)聯(lián)數(shù)據(jù)校驗(yàn)。
Bail
?方法用于設(shè)定只要后續(xù)的多個(gè)校驗(yàn)中有一個(gè)規(guī)則校驗(yàn)失敗則停止校驗(yàn)立即返回錯(cuò)誤結(jié)果。
Ci
?方法用于設(shè)置需要比較數(shù)值的規(guī)則時(shí),不區(qū)分字段的大小寫。
Run
?方法對(duì)給定規(guī)則和信息的數(shù)據(jù)進(jìn)行校驗(yàn)操作。
I18n
?方法用于設(shè)置當(dāng)前校驗(yàn)對(duì)象的?I18N
?國(guó)際化組件。默認(rèn)情況下,校驗(yàn)組件使用的是框架全局默認(rèn)的?i18n
?組件對(duì)象。
Data
?方法用于傳遞需要聯(lián)合校驗(yàn)的數(shù)據(jù)集合,往往傳遞的是?map
?類型或者?struct
?類型。
Rules
?方法用于傳遞當(dāng)前鏈?zhǔn)讲僮餍r?yàn)的自定義校驗(yàn)規(guī)則,往往使用?[]string
?類型或者?map
?類型。
Messages
?方法用于傳遞當(dāng)前鏈?zhǔn)讲僮餍r?yàn)的自定義錯(cuò)誤提示信息,往往使用?map
?類型傳遞。由于數(shù)據(jù)校驗(yàn)對(duì)象也是一個(gè)非常常用的對(duì)象,因此?g
?模塊中定義了?Validator
?方法來(lái)快捷創(chuàng)建校驗(yàn)對(duì)象。大部分場(chǎng)景下我們推薦使用?g
?模塊的?g.Validator()
?方式來(lái)快捷創(chuàng)建一個(gè)校驗(yàn)對(duì)象。
var (
err error
ctx = gctx.New()
)
err = g.Validator().
Rules("min:18").
Data(16).
Messages("未成年人不允許注冊(cè)喲").
Run(ctx)
fmt.Println(err.Error())
// Output:
// 未成年人不允許注冊(cè)喲
var (
err error
ctx = gctx.New()
data = g.Map{
"password": "123",
}
)
err = g.Validator().Data("").Assoc(data).
Rules("required-with:password").
Messages("請(qǐng)輸入確認(rèn)密碼").
Run(ctx)
fmt.Println(err.Error())
type User struct {
Name string `v:"required#請(qǐng)輸入用戶姓名"`
Type int `v:"required#請(qǐng)選擇用戶類型"`
}
var (
err error
ctx = gctx.New()
user = User{}
data = g.Map{
"name": "john",
}
)
if err = gconv.Scan(data, &user); err != nil {
panic(err)
}
err = g.Validator().Assoc(data).Data(user).Run(ctx)
if err != nil {
fmt.Println(err.(gvalid.Error).Items())
}
// Output:
// [map[Type:map[required:請(qǐng)選擇用戶類型]]]
params := map[string]interface{}{
"passport": "",
"password": "123456",
"password2": "1234567",
}
rules := map[string]string{
"passport": "required|length:6,16",
"password": "required|length:6,16|same:password2",
"password2": "required|length:6,16",
}
messages := map[string]interface{}{
"passport": "賬號(hào)不能為空|賬號(hào)長(zhǎng)度應(yīng)當(dāng)在{min}到{max}之間",
"password": map[string]string{
"required": "密碼不能為空",
"same": "兩次密碼輸入不相等",
},
}
err := g.Validator().Messages(messages).Rules(rules).Data(params).Run(gctx.New())
if err != nil {
g.Dump(err.Maps())
}
執(zhí)行后,終端輸出:
{
"passport": {
"length": "賬號(hào)長(zhǎng)度應(yīng)當(dāng)在6到16之間",
"required": "賬號(hào)不能為空"
},
"password": {
"same": "兩次密碼輸入不相等"
}
}
Copyright©2021 w3cschool編程獅|閩ICP備15016281號(hào)-3|閩公網(wǎng)安備35020302033924號(hào)
違法和不良信息舉報(bào)電話:173-0602-2364|舉報(bào)郵箱:jubao@eeedong.com
掃描二維碼
下載編程獅App
編程獅公眾號(hào)
聯(lián)系方式:
更多建議: