最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

GoFrame框架數(shù)據(jù)校驗(yàn)之校驗(yàn)對(duì)象校驗(yàn)結(jié)構(gòu)體

 更新時(shí)間:2022年06月20日 17:28:33   作者:王中陽(yáng)Go  
這篇文章主要為大家介紹了GoFrame框架數(shù)據(jù)校驗(yàn)之校驗(yàn)對(duì)象校驗(yàn)結(jié)構(gòu)體示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪

前言摘要

這篇文章將會(huì)為大家介紹GoFrame數(shù)據(jù)校驗(yàn)中校驗(yàn)對(duì)象的知識(shí)點(diǎn),包括:Validator對(duì)象常用方法的介紹、單數(shù)據(jù)校驗(yàn)、校驗(yàn)Map、校驗(yàn)結(jié)構(gòu)體的示例。

基本概念

數(shù)據(jù)校驗(yàn)組件提供了數(shù)據(jù)校驗(yàn)對(duì)象:用于數(shù)據(jù)校驗(yàn)統(tǒng)一的配置管理,支持我們便捷的進(jìn)行鏈?zhǔn)讲僮鳌?/p>

方法介紹

type Validator
    func New() *Validator
    func (v *Validator) CheckMap(params interface{}) Error
    func (v *Validator) CheckStruct(object interface{}) Error
    func (v *Validator) CheckValue(value interface{}) Error
    func (v *Validator) Clone() *Validator
    func (v *Validator) Ctx(ctx context.Context) *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) Rules(rules interface{}) *Validator

簡(jiǎn)要說(shuō)明

  • New()方法用于創(chuàng)建一個(gè)新的校驗(yàn)對(duì)象。
  • CheckValue/CheckMap/CheckStruct方法用于特定參數(shù)類型的數(shù)據(jù)校驗(yàn),我們?cè)陧?xiàng)目開(kāi)發(fā)中使用比較多的是CheckStruct,也建議大家使用CheckStruct。
  • Ctx()方法用于傳遞Context上下文變量。
  • I18n()方法用于設(shè)置當(dāng)前校驗(yàn)對(duì)象的I18N國(guó)際化組件,默認(rèn)情況下,校驗(yàn)組件使用的是框架全局默認(rèn)的i18n組件對(duì)象。
  • Data()方法用于設(shè)置需要校驗(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類型傳遞,具體看后續(xù)代碼示例。

注意問(wèn)題TIPS

在數(shù)據(jù)校驗(yàn)對(duì)象的CheckValue/CheckMap/CheckStruct方法中,不存在Context上下文變量參數(shù),而是通過(guò)鏈?zhǔn)讲僮鞯腃tx方法來(lái)控制。

GoFrame的g模塊中定義了Validator方法來(lái)快捷創(chuàng)建校驗(yàn)對(duì)象:官方也推薦我們使用g模塊的g.Validator()方式來(lái)快捷創(chuàng)建一個(gè)校驗(yàn)對(duì)象。

鏈?zhǔn)讲僮?/h2>

示例1:?jiǎn)螖?shù)據(jù)校驗(yàn)

簡(jiǎn)單示例

err := g.Validator().Rules("min:60").Messages("考試不及格").CheckValue(16)
    fmt.Println(err.String()) //打印結(jié)果:考試不及格

進(jìn)階示例

package main
import (
   "fmt"
   "github.com/gogf/gf/frame/g"
)
func main() {
   data := g.Map{
      "password": "123", //這個(gè)的作用僅是定義了這個(gè)結(jié)構(gòu)設(shè)置了默認(rèn)值,并不代表著傳入了值
   }
   //Data()中的參數(shù)是需要進(jìn)行校驗(yàn)的數(shù)據(jù)集合,常用于map或者結(jié)構(gòu)體類型。
   //CheckValue()是輸入的參數(shù)
   err := g.Validator().Data(data).Rules("required-with:password").Messages("請(qǐng)輸入確認(rèn)密碼").CheckValue("")
   if err != nil {
      fmt.Println("CheckValue傳入為空時(shí):" + err.String()) // 請(qǐng)輸入確認(rèn)密碼
   } else {
      fmt.Println("CheckValue傳入為空時(shí):校驗(yàn)通過(guò)")
   }
   err = g.Validator().Data(data).Rules("required-with:password").Messages("請(qǐng)輸入確認(rèn)密碼").CheckValue("1")
   if err != nil {
      fmt.Println("CheckValue傳入不為空時(shí):" + err.String()) // 請(qǐng)輸入確認(rèn)密碼
   } else {
      fmt.Println("CheckValue傳入不為空時(shí):校驗(yàn)通過(guò)")
   }
}

進(jìn)階示例打印結(jié)果

示例2:Map數(shù)據(jù)校驗(yàn)

params := map[string]interface{}{
	"passport":  "",
	"password":  "wangzhongyang",
	"password2": "zhongyang",
}
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).CheckMap(params)
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": "兩次密碼輸入不相等"
    }
}

示例3:Struct數(shù)據(jù)校驗(yàn)

type User struct {
	Name string `v:"required#請(qǐng)輸入用戶姓名"`
	Type int    `v:"required#請(qǐng)選擇用戶類型"`
}
data := g.Map{
	"name": "wangzhongyang",
}
user := User{}
if err := gconv.Scan(data, &user); err != nil {
	panic(err)
}
err := g.Validator().Data(data).CheckStruct(user)
if err != nil {
	fmt.Println(err.Items()) //[map[Type:map[required:請(qǐng)選擇用戶類型]]]
}

總結(jié)

這篇文章為大家介紹了GoFrame數(shù)據(jù)校驗(yàn)之校驗(yàn)對(duì)象的知識(shí)點(diǎn),包括:Validator對(duì)象常用方法的介紹、單數(shù)據(jù)校驗(yàn)、校驗(yàn)Map、校驗(yàn)結(jié)構(gòu)體的示例。

更多關(guān)于GoFrame校驗(yàn)結(jié)構(gòu)體的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

最新評(píng)論

特克斯县| 平原县| 许昌县| 简阳市| 四子王旗| 库伦旗| 民县| 赤水市| 阳江市| 金昌市| 大邑县| 嘉祥县| 青海省| 莎车县| 抚宁县| 尼玛县| 昆明市| 隆昌县| 会东县| 阜南县| 杨浦区| 雷州市| 新郑市| 莱西市| 丹凤县| 会同县| 丰台区| 光泽县| 庆阳市| 平遥县| 台州市| 凤翔县| 依兰县| 西林县| 合肥市| 容城县| 长汀县| 滕州市| 泰和县| 石狮市| 平和县|