Skip to main content
Version: 2.8.x(Latest)

We can treat a given variable as a complete parameter for validation, i.e., single data validation. If a variable is a complex type like Struct/Map, and we need to validate its internal attributes/key-value pairs, this scenario will be introduced in later chapters. Single data validation must specify the data to be validated through the Data method and the validation rules through the Rule method. Single data validation is relatively straightforward. Let's look at some examples.

Validate Data Length With Default Error Messages

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())
}
}

After execution, the terminal output:

The value `12345` length must be between 6 and 16

Validate Data Type and Size With Custom Error Messages

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 = "Please enter an integer|The parameter size is incorrect, my friend"
value = 5.66
)

if err := g.Validator().Rules(rule).Messages(messages).Data(value).Run(ctx); err != nil {
g.Dump(err.Map())
}
}

After execution, the terminal output:

{
"integer": "Please enter an integer",
"between": "The parameter size is incorrect, my friend",
}

As you can see, multiple rules and multiple custom error messages are separated using the | character in English. Note that the order of custom error messages corresponds one-to-one with the order of multiple rules. The messages parameter supports not only string types but also map[string]string types, as shown in the following example:

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": "Please enter a valid URL address",
"min-length": "The address must be at least {min} characters long",
}
)
if err := g.Validator().Rules(rule).Messages(messages).Data(value).Run(ctx); err != nil {
g.Dump(err.Map())
}
}

After execution, the terminal output:

{
"url": "Please enter a valid URL address",
}

Use Custom Regex to Validate Data Format With Default Error Messages

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)
}
}

After execution, the terminal output:

The value `abcde6` must be in regex of: \d{6,}|\D{6,}