可选校验规则

当给定的数据校验规则中不包含required*规则时,表示该规则不是一个必须规则,当键值为nil或者空字符串时,将会忽略其校验。我们来看个例子:

  1. package main
  2. import (
  3. "github.com/gogf/gf/v2/frame/g"
  4. "github.com/gogf/gf/v2/os/gctx"
  5. )
  6. func main() {
  7. var (
  8. ctx = gctx.New()
  9. params = map[string]interface{}{
  10. "passport": "",
  11. "password": "123456",
  12. "password2": "1234567",
  13. }
  14. rules = []string{
  15. "passport@length:6,16",
  16. "password@required|length:6,16|same:password2",
  17. "password2@required|length:6,16",
  18. }
  19. )
  20. err := g.Validator().Rules(rules).Data(params).Run(ctx)
  21. if err != nil {
  22. g.Dump(err.Maps())
  23. }
  24. }

需要注意,其中的passport键名并没有required规则,因此即便给定的passport参数为空字符串,不满足规则时,也并没有报错,因为校验组件将其看做可选校验规则。

执行后,终端输出:

  1. {
  2. "password": {
  3. "same": "The password value `123456` must be the same as field password2",
  4. },
  5. }