可选校验规则
当给定的数据校验规则中不包含required*
规则时,表示该规则不是一个必须规则,当键值为nil
或者空字符串
时,将会忽略其校验。我们来看个例子:
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
规则,因此即便给定的passport
参数为空字符串,不满足规则时,也并没有报错,因为校验组件将其看做可选校验规则。
执行后,终端输出:
{
"password": {
"same": "The password value `123456` must be the same as field password2",
},
}