Versions Compared
compared with
Key
- This line was added.
- This line was removed.
- Formatting was changed.
我们可以将给定的变量当做一个完整的参数进行校验,即单数据校验。如果变量是Struct/Map
复杂类型,我们需要校验其内部的属性/键值对的场景,将会在后续章节介绍。单数据校验必须通过Data
方法给定被校验数据,Rule
方法给定校验规则。单数据校验比较简单,我们来看几个示例。
校验数据长度,使用默认的错误提示
Code Block | ||
---|---|---|
| ||
package main
import (
"fmt"
"github.com/gogf/gf/v2/frame/g"
" |
单数据校验 - Check
接口文档:https://godoc.org/github.com/gogf/gf/ |
v2/os/gctx" ) func |
main( |
) |
{ |
单数据校验比较简单,我们来看几个示例。
示例1,校验数据长度,使用默认的错误提示
rule :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()) } } |
执行后,终端输出:
Code Block | ||
---|---|---|
| ||
The value `12345` length must be between 6 and 16 |
校验数据类型及大小,并且使用自定义的错误提示
Code Block | ||
---|---|---|
| ||
package main import ( "github.com/gogf/gf/v2/frame/ |
示例2,校验数据类型及大小,并且使用自定义的错误提示
rule :g" "github.com/gogf/gf/v2/os/gctx" ) func main() { var ( ctx = gctx.New() rule = "integer|between:6,16" |
messages |
= "请输入一个整数|参数大小不对啊老铁" value = 5.66 ) if |
err := |
g. |
Validator( |
).Rules(rule).Messages(messages).Data(value).Run(ctx); |
err != nil { |
g.Dump(err.Map()) } |
可以看到,多个规则以及多个自定义错误提示之间使用英文“|”号进行分割,注意自定义错误提示的顺序和多规则的顺序一一对应。msgs参数除了支持string类型以外,还支持map[string]string类型,请看以下例子:
rule :} |
执行后,终端输出:
Code Block | ||
---|---|---|
| ||
{
"integer": "请输入一个整数",
"between": "参数大小不对啊老铁",
} |
可以看到,多个规则以及多个自定义错误提示之间使用英文 |
号进行分割,注意自定义错误提示的顺序和多规则的顺序一一对应。messages
参数除了支持string
类型以外,还支持map[string]string
类型,请看以下例子:
Code Block | ||
---|---|---|
| ||
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": |
"请输入正确的URL地址",
|
"min-length" |
: "地址长度至少为 |
{min}位", } ) if err := |
g.Validator().Rules(rule).Messages(messages).Data(value).Run(ctx); err != nil { |
g.Dump(err.Map()) } |
} |
执行后,终端输出:
Code Block | ||
---|---|---|
| ||
{
"url": "请输入正确的URL地址",
} |
使用自定义正则校验数据格式,使用默认错误提示
Code Block | ||
---|---|---|
| ||
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 |
示例3,使用自定义正则校验数据格式,使用默认错误提示
// 参数长度至少为6个数字或者6个字母,但是总长度不能超过16个字符 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) |
}
} |
执行后,终端输出:
Code Block | ||
---|---|---|
| ||
The value `abcde6` must be in regex of: \d{6,}|\D{6,} |
Panel | ||
---|---|---|
| ||
|