W3Cschool
恭喜您成為首批注冊(cè)用戶
獲得88經(jīng)驗(yàn)值獎(jiǎng)勵(lì)
我們可以將給定的變量當(dāng)做一個(gè)完整的參數(shù)進(jìn)行校驗(yàn),即單數(shù)據(jù)校驗(yàn)。如果變量是?Struct/Map
?復(fù)雜類型,我們需要校驗(yàn)其內(nèi)部的屬性/鍵值對(duì)的場(chǎng)景,將會(huì)在后續(xù)章節(jié)介紹。單數(shù)據(jù)校驗(yàn)必須通過(guò)?Data
?方法給定被校驗(yàn)數(shù)據(jù),?Rule
?方法給定校驗(yàn)規(guī)則。單數(shù)據(jù)校驗(yàn)比較簡(jiǎn)單,我們來(lái)看幾個(gè)示例。
package main
import (
"fmt"
"github.com/gogf/gf/v2/frame/g"
"github.com/gogf/gf/v2/os/gctx"
)
func main() {
var (
ctx = gctx.New()
rule = "length:6,16"
)
if err := g.Validator().Rules(rule).Data("123456").Run(ctx); err != nil {
fmt.Println(err.String())
}
if err := g.Validator().Rules(rule).Data("12345").Run(ctx); err != nil {
fmt.Println(err.String())
}
}
執(zhí)行后,終端輸出:
The value `12345` length must be between 6 and 16
package main
import (
"github.com/gogf/gf/v2/frame/g"
"github.com/gogf/gf/v2/os/gctx"
)
func main() {
var (
ctx = gctx.New()
rule = "integer|between:6,16"
messages = "請(qǐng)輸入一個(gè)整數(shù)|參數(shù)大小不對(duì)啊老鐵"
value = 5.66
)
if err := g.Validator().Rules(rule).Messages(messages).Data(value).Run(ctx); err != nil {
g.Dump(err.Map())
}
}
執(zhí)行后,終端輸出:
{
"integer": "請(qǐng)輸入一個(gè)整數(shù)",
"between": "參數(shù)大小不對(duì)啊老鐵",
}
可以看到,多個(gè)規(guī)則以及多個(gè)自定義錯(cuò)誤提示之間使用英文 ?|
? 號(hào)進(jìn)行分割,注意自定義錯(cuò)誤提示的順序和多規(guī)則的順序一一對(duì)應(yīng)。?messages
?參數(shù)除了支持?string
?類型以外,還支持?map[string]string
?類型,請(qǐng)看以下例子:
package main
import (
"github.com/gogf/gf/v2/frame/g"
"github.com/gogf/gf/v2/os/gctx"
)
func main() {
var (
ctx = gctx.New()
rule = "url|min-length:11"
value = "goframe.org"
messages = map[string]string{
"url": "請(qǐng)輸入正確的URL地址",
"min-length": "地址長(zhǎng)度至少為{min}位",
}
)
if err := g.Validator().Rules(rule).Messages(messages).Data(value).Run(ctx); err != nil {
g.Dump(err.Map())
}
}
執(zhí)行后,終端輸出:
{
"url": "請(qǐng)輸入正確的URL地址",
}
package main
import (
"fmt"
"github.com/gogf/gf/v2/frame/g"
"github.com/gogf/gf/v2/os/gctx"
)
func main() {
var (
ctx = gctx.New()
rule = `regex:\d{6,}|\D{6,}|max-length:16`
)
if err := g.Validator().Rules(rule).Data(`123456`).Run(ctx); err != nil {
fmt.Println(err)
}
if err := g.Validator().Rules(rule).Data(`abcde6`).Run(ctx); err != nil {
fmt.Println(err)
}
}
執(zhí)行后,終端輸出:
The value `abcde6` must be in regex of: \d{6,}|\D{6,}
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)系方式:
更多建議: