新聞中心
校驗(yàn)對(duì)象
數(shù)據(jù)校驗(yàn)組件提供了數(shù)據(jù)校驗(yàn)對(duì)象,用于數(shù)據(jù)校驗(yàn)的統(tǒng)一的配置管理、便捷的鏈?zhǔn)讲僮鳌?/p>

成都創(chuàng)新互聯(lián)-專業(yè)網(wǎng)站定制、快速模板網(wǎng)站建設(shè)、高性價(jià)比瀘州網(wǎng)站開(kāi)發(fā)、企業(yè)建站全套包干低至880元,成熟完善的模板庫(kù),直接使用。一站式瀘州網(wǎng)站制作公司更省心,省錢,快速模板網(wǎng)站建設(shè)找我們,業(yè)務(wù)覆蓋瀘州地區(qū)。費(fèi)用合理售后完善,10余年實(shí)體公司更值得信賴。
接口文檔: 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ì)象。
使用示例
單數(shù)據(jù)校驗(yàn)
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())Struct數(shù)據(jù)校驗(yàn)
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)選擇用戶類型]]]Map數(shù)據(jù)校驗(yàn)
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": "兩次密碼輸入不相等"
}
} 當(dāng)前標(biāo)題:創(chuàng)新互聯(lián)GoFrame教程:GoFrame 數(shù)據(jù)校驗(yàn)-校驗(yàn)對(duì)象
標(biāo)題URL:http://fisionsoft.com.cn/article/djseggj.html


咨詢
建站咨詢
