gf: github.com/gogf/gf/util/gvalid Index | Examples | Files

package gvalid

import "github.com/gogf/gf/util/gvalid"

Package gvalid implements powerful and useful data/form validation functionality.

Index

Examples

Package Files

gvalid.go gvalid_check.go gvalid_check_map.go gvalid_check_struct.go gvalid_custom_rule.go gvalid_error.go gvalid_message.go gvalid_rule_length.go gvalid_rule_luhn.go gvalid_rule_range.go gvalid_rule_required.go gvalid_rule_resident_id.go

func DeleteRule Uses

func DeleteRule(rule string)

DeleteRule deletes custom defined validation rule and its function from global package.

func RegisterRule Uses

func RegisterRule(rule string, f RuleFunc) error

RegisterRule registers custom validation rule and function for package. It returns error if there's already the same rule registered previously.

Code:

rule := "unique-name"
gvalid.RegisterRule(rule, func(rule string, value interface{}, message string, params map[string]interface{}) error {
    var (
        id   = gconv.Int(params["Id"])
        name = gconv.String(value)
    )
    n, err := g.Table("user").Where("id != ? and name = ?", id, name).Count()
    if err != nil {
        return err
    }
    if n > 0 {
        return errors.New(message)
    }
    return nil
})
type User struct {
    Id   int
    Name string `v:"required|unique-name # 请输入用户名称|用户名称已被占用"`
    Pass string `v:"required|length:6,18"`
}
user := &User{
    Id:   1,
    Name: "john",
    Pass: "123456",
}
err := gvalid.CheckStruct(user, nil)
fmt.Println(err.Error())
// May Output:
// 用户名称已被占用

type CustomMsg Uses

type CustomMsg = map[string]interface{}

CustomMsg is the custom error message type, like: map[field] => string|map[rule]string

type Error Uses

type Error struct {
    // contains filtered or unexported fields
}

Error is the validation error for validation result.

func Check Uses

func Check(value interface{}, rules string, messages interface{}, params ...interface{}) *Error

Check checks single value with specified rules. It returns nil if successful validation.

The parameter <value> can be any type of variable, which will be converted to string for validation. The parameter <rules> can be one or more rules, multiple rules joined using char '|'. The parameter <messages> specifies the custom error messages, which can be type of: string/map/struct/*struct. The optional parameter <params> specifies the extra validation parameters for some rules like: required-*、same、different, etc.

func CheckMap Uses

func CheckMap(params interface{}, rules interface{}, messages ...CustomMsg) *Error

CheckMap validates map and returns the error result. It returns nil if with successful validation.

The parameter <rules> can be type of []string/map[string]string. It supports sequence in error result if <rules> is type of []string. The optional parameter <messages> specifies the custom error messages for specified keys and rules.

Code:

params := map[string]interface{}{
    "passport":  "",
    "password":  "123456",
    "password2": "1234567",
}
rules := []string{
    "passport@required|length:6,16#账号不能为空|账号长度应当在:min到:max之间",
    "password@required|length:6,16|same:password2#密码不能为空|密码长度应当在:min到:max之间|两次密码输入不相等",
    "password2@required|length:6,16#",
}
if e := gvalid.CheckMap(params, rules); e != nil {
    fmt.Println(e.Map())
    fmt.Println(e.FirstItem())
    fmt.Println(e.FirstString())
}
// May Output:
// map[required:账号不能为空 length:账号长度应当在6到16之间]
// passport map[required:账号不能为空 length:账号长度应当在6到16之间]
// 账号不能为空

func CheckStruct Uses

func CheckStruct(object interface{}, rules interface{}, messages ...CustomMsg) *Error

CheckStruct validates strcut and returns the error result.

The parameter <object> should be type of struct/*struct. The parameter <rules> can be type of []string/map[string]string. It supports sequence in error result if <rules> is type of []string. The optional parameter <messages> specifies the custom error messages for specified keys and rules.

Empty string attribute.

Code:

type Params struct {
    Page      int    `v:"required|min:1         # page is required"`
    Size      int    `v:"required|between:1,100 # size is required"`
    ProjectId string `v:"between:1,10000        # project id must between :min, :max"`
}
obj := &Params{
    Page: 1,
    Size: 10,
}
err := gvalid.CheckStruct(obj, nil)
fmt.Println(err == nil)

Output:

true

func (*Error) Error Uses

func (e *Error) Error() string

Error implements interface of error.Error.

func (*Error) FirstItem Uses

func (e *Error) FirstItem() (key string, messages map[string]string)

FirstItem returns the field name and error messages for the first validation rule error.

func (*Error) FirstRule Uses

func (e *Error) FirstRule() (rule string, err string)

FirstRule returns the first error rule and message string.

func (*Error) FirstString Uses

func (e *Error) FirstString() (err string)

FirstString returns the first error message as string. Note that the returned message might be different if it has no sequence.

func (*Error) Map Uses

func (e *Error) Map() map[string]string

Map returns the first error message as map.

func (*Error) Maps Uses

func (e *Error) Maps() ErrorMap

Maps returns all error messages as map.

func (*Error) String Uses

func (e *Error) String() string

String returns all error messages as string, multiple error messages joined using char ';'.

func (*Error) Strings Uses

func (e *Error) Strings() (errs []string)

Strings returns all error messages as string array.

type ErrorMap Uses

type ErrorMap map[string]map[string]string

ErrorMap is the validation error map: map[field]map[rule]message

type RuleFunc Uses

type RuleFunc func(rule string, value interface{}, message string, params map[string]interface{}) error

RuleFunc is the custom function for data validation. The parameter <rule> specifies the validation rule string, like "required", "between:1,100", etc. The parameter <value> specifies the value for this rule to validate. The parameter <message> specifies the custom error message or configured i18n message for this rule. The parameter <params> specifies all the parameters that needs. You can ignore parameter <params> if you do not really need it in your custom validation rule.

Package gvalid imports 13 packages (graph) and is imported by 5 packages. Updated 2020-11-10. Refresh now. Tools for package owners.