日本综合一区二区|亚洲中文天堂综合|日韩欧美自拍一区|男女精品天堂一区|欧美自拍第6页亚洲成人精品一区|亚洲黄色天堂一区二区成人|超碰91偷拍第一页|日韩av夜夜嗨中文字幕|久久蜜综合视频官网|精美人妻一区二区三区

RELATEED CONSULTING
相關咨詢
選擇下列產(chǎn)品馬上在線溝通
服務時間:8:30-17:00
你可能遇到了下面的問題
關閉右側工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營銷解決方案
創(chuàng)新互聯(lián)GoFrame教程:GoFrame 數(shù)據(jù)校驗-校驗對象

校驗對象

數(shù)據(jù)校驗組件提供了數(shù)據(jù)校驗對象,用于數(shù)據(jù)校驗的統(tǒng)一的配置管理、便捷的鏈式操作。

成都創(chuàng)新互聯(lián)-專業(yè)網(wǎng)站定制、快速模板網(wǎng)站建設、高性價比瀘州網(wǎng)站開發(fā)、企業(yè)建站全套包干低至880元,成熟完善的模板庫,直接使用。一站式瀘州網(wǎng)站制作公司更省心,省錢,快速模板網(wǎng)站建設找我們,業(yè)務覆蓋瀘州地區(qū)。費用合理售后完善,10余年實體公司更值得信賴。

接口文檔: 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

簡要說明:

  1. ?New?方法用于創(chuàng)建一個新的校驗對象。
  2. ?Assoc?用于關聯(lián)數(shù)據(jù)校驗。
  3. ?Bail?方法用于設定只要后續(xù)的多個校驗中有一個規(guī)則校驗失敗則停止校驗立即返回錯誤結果。
  4. ?Ci?方法用于設置需要比較數(shù)值的規(guī)則時,不區(qū)分字段的大小寫。
  5. ?Run?方法對給定規(guī)則和信息的數(shù)據(jù)進行校驗操作。
  6. ?I18n?方法用于設置當前校驗對象的?I18N?國際化組件。默認情況下,校驗組件使用的是框架全局默認的?i18n?組件對象。
  7. ?Data?方法用于傳遞需要聯(lián)合校驗的數(shù)據(jù)集合,往往傳遞的是?map?類型或者?struct?類型。
  8. ?Rules?方法用于傳遞當前鏈式操作校驗的自定義校驗規(guī)則,往往使用?[]string?類型或者?map?類型。
  9. ?Messages?方法用于傳遞當前鏈式操作校驗的自定義錯誤提示信息,往往使用?map?類型傳遞。

由于數(shù)據(jù)校驗對象也是一個非常常用的對象,因此?g?模塊中定義了?Validator?方法來快捷創(chuàng)建校驗對象。大部分場景下我們推薦使用?g?模塊的?g.Validator()?方式來快捷創(chuàng)建一個校驗對象。

使用示例

單數(shù)據(jù)校驗

var (
	err error
	ctx = gctx.New()
)
err = g.Validator().
	Rules("min:18").
	Data(16).
	Messages("未成年人不允許注冊喲").
	Run(ctx)
fmt.Println(err.Error())

// Output:
// 未成年人不允許注冊喲
var (
	err  error
	ctx  = gctx.New()
	data = g.Map{
		"password": "123",
	}
)

err = g.Validator().Data("").Assoc(data).
	Rules("required-with:password").
	Messages("請輸入確認密碼").
	Run(ctx)

fmt.Println(err.Error())

Struct數(shù)據(jù)校驗

type User struct {
	Name string `v:"required#請輸入用戶姓名"`
	Type int    `v:"required#請選擇用戶類型"`
}
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:請選擇用戶類型]]]

Map數(shù)據(jù)校驗

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": "賬號不能為空|賬號長度應當在{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": "賬號長度應當在6到16之間",
        "required": "賬號不能為空"
    },
    "password": {
        "same": "兩次密碼輸入不相等"
    }
}

文章題目:創(chuàng)新互聯(lián)GoFrame教程:GoFrame 數(shù)據(jù)校驗-校驗對象
文章網(wǎng)址:http://www.dlmjj.cn/article/djseggj.html