新聞中心
可選校驗(yàn)規(guī)則
當(dāng)給定的數(shù)據(jù)校驗(yàn)規(guī)則中不包含?required*?規(guī)則時,表示該規(guī)則不是一個必須規(guī)則。如果當(dāng)給定的值為?nil?或者空字符串時,將會忽略其校驗(yàn)。

站在用戶的角度思考問題,與客戶深入溝通,找到屏邊網(wǎng)站設(shè)計(jì)與屏邊網(wǎng)站推廣的解決方案,憑借多年的經(jīng)驗(yàn),讓設(shè)計(jì)與互聯(lián)網(wǎng)技術(shù)結(jié)合,創(chuàng)造個性化、用戶體驗(yàn)好的作品,建站類型包括:成都做網(wǎng)站、成都網(wǎng)站建設(shè)、成都外貿(mào)網(wǎng)站建設(shè)、企業(yè)官網(wǎng)、英文網(wǎng)站、手機(jī)端網(wǎng)站、網(wǎng)站推廣、域名注冊、雅安服務(wù)器托管、企業(yè)郵箱。業(yè)務(wù)覆蓋屏邊地區(qū)。
示例1,空字符串
package main
import (
"fmt"
"github.com/GOgf/gf/v2/frame/g"
"github.com/gogf/gf/v2/os/gctx"
)
func main() {
type Params struct {
Page int `v:"required|min:1 # page is required"`
Size int `v:"required|between:1,100 # size is required"`
ProjectId string `v:"between:1,10000 # project id must between {min}, {max}"`
}
var (
ctx = gctx.New()
obj = &Params{
Page: 1,
Size: 10,
}
)
err := g.Validator().Data(obj).Run(ctx)
fmt.Println(err)
// Output:
//
} 示例2,空指針屬性
package main
import (
"fmt"
"github.com/gogf/gf/v2/container/gvar"
"github.com/gogf/gf/v2/frame/g"
"github.com/gogf/gf/v2/os/gctx"
)
func main() {
type Params struct {
Page int `v:"required|min:1 # page is required"`
Size int `v:"required|between:1,100 # size is required"`
ProjectId *gvar.Var `v:"between:1,10000 # project id must between {min}, {max}"`
}
var (
ctx = gctx.New()
obj = &Params{
Page: 1,
Size: 10,
}
)
err := g.Validator().Data(obj).Run(ctx)
fmt.Println(err)
// Output:
//
} 示例3,空整型屬性
需要注意的是,如果鍵值為?0?或者?false?,參數(shù)值將仍然會被校驗(yàn)。
package main
import (
"fmt"
"github.com/gogf/gf/v2/frame/g"
"github.com/gogf/gf/v2/os/gctx"
)
func main() {
type Params struct {
Page int `v:"required|min:1 # page is required"`
Size int `v:"required|between:1,100 # size is required"`
ProjectId int `v:"between:1,10000 # project id must between {min}, {max}"`
}
var (
ctx = gctx.New()
obj = &Params{
Page: 1,
Size: 10,
}
)
err := g.Validator().Data(obj).Run(ctx)
fmt.Println(err)
// Output:
//
} 執(zhí)行后,終端輸出:
project id must between 1, 10000示例4,通過map傳參
package main
import (
"github.com/gogf/gf/v2/frame/g"
"github.com/gogf/gf/v2/os/gctx"
)
func main() {
var (
ctx = gctx.New()
params = map[string]interface{}{
"passport": "",
"password": "123456",
"password2": "1234567",
}
rules = []string{
"passport@length:6,16",
"password@required|length:6,16|same:password2",
"password2@required|length:6,16",
}
)
err := g.Validator().Rules(rules).Data(params).Run(ctx)
if err != nil {
g.Dump(err.Maps())
}
}需要注意,其中的?passport?鍵名并沒有?required?規(guī)則,因此即便給定的?passport?參數(shù)為空字符串,不滿足規(guī)則時,也并沒有報錯,因?yàn)樾r?yàn)組件將其看做可選校驗(yàn)規(guī)則。
執(zhí)行后,終端輸出:
{
"password": {
"same": "The password value `123456` must be the same as field password2",
},
} 名稱欄目:創(chuàng)新互聯(lián)GoFrame教程:GoFrame 數(shù)據(jù)校驗(yàn)-可選校驗(yàn)
本文地址:http://fisionsoft.com.cn/article/dhpspjo.html


咨詢
建站咨詢
