继续创作,加速生长!这是我参与「日新方案 6 月更文挑战」的第22天,点击查看活动概况

前言摘要

这篇文章将会为我们介绍GoFrame数据校验中校验目标的知识点,包含:Validator目标变量名的命名规则常用办法的介绍龚俊、单数据校变量名验、校验Map、校验结构体的示例。

变量与函数本概念

数据校验组件供给了数据校验目标:用于数据校变量的定义验统一的配置管理,支撑我们便捷的进GitHubgithub官网链式操作。宫颈癌

办法介绍

type Validator
    func New() *Validator
    func (v *Validator) CheckMap(params interface{}) Error
    func (v *Validator) CheckStruct(object interface{}) Error
    func (v *Validator) CheckValue(value interface{}) Error
    func (v *Validator) Clone() *Validator
    func (v *Validator) Ctx(ctx context.Context) *Validator
    func (v *Validator) Data(data interface{}) *Validator
    func (v *Validator) I18n(i18nManager *gi18n.Manager) *Validator
    func (v *Validator) Messages(messages interface{}) *Validator
    func (v *Validator) Rules(rules interface{}) *Validator

简要阐明

  1. New()办法用于创立一个新的校验目标。
  2. CheckValue/CheckgoogleMap/CheckStruct办法用于特定参数类型的数据校验,github中文官网网页们在项目开发中运用比较多的是Che工龄越长退休金越多吗ckStru数据校验量的定义ct,也建议我们运用CheckStruct
  3. Ctx(gitee)办法用于传递Conte工龄越长退休金越多吗x工龄差一年工资差多少t上下文变量。
  4. I18github永久回家地址n()办法用于设置当前校验目标的I18N国际化组件,默许情况下,校验组件运用的是框架大局默许的i18n组件目标。
  5. Dgithub中文官网网页ata()办法用于设置需求校验的数据集合,支撑map类型或许str工龄越长退休金越多吗uct类型。
  6. R变量之间的关系ulgithub永久回家地址es()办法用于传递当前链式操作校验giti轮胎的自变量名定义校验规矩,支撑运用[]string类型或许map类型。
  7. Messages()办法giti轮胎用于传递github中文官网网页当前链式操作校验的自定义过错提示信息,往往运用map类型传递,详细看后续代码示例。

留意问题TIPS

在数据校验目标的CheckValue/CheckMgithub官网ap/CheckStruct办法中,不存git命令Context上下文变量参数,而是通过github永久回家地址链式操作的Ctx办法来操gitee控。

GoFramegithub是什么g模块中定义了Validator办法来方便创立校验目标:官方也引荐我们运用g模块的g.VGitHubalidator()办法来方便创立一个校验目标。

链式操作

示例1:单数据校验

简单示例

err := g.Validator().Rules("min:60").Messages("考试不及格").CheckValue(16)
    fmt.Println(err.String()) //打印成果:考试不及格

进阶示例

package main
import (
   "fmt"
   "github.com/gogf/gf/frame/g"
)
func main() {
   data := g.Map{
      "password": "123", //这个的效果仅是定义了这个结构设置了默许值,并不代表着传入了值
   }
   //Data()中的参数是需求进行校验的数据集合,常用于map或许结构体类型。
   //CheckValue()是输入的参数
   err := g.Validator().Data(data).Rules("required-with:password").Messages("请输入承认暗码").CheckValue("")
   if err != nil {
      fmt.Println("CheckValue传入为空时:" + err.String()) // 请输入承认暗码
   } else {
      fmt.Println("CheckValue传入为空时:校验通过")
   }
   err = g.Validator().Data(data).Rules("required-with:password").Messages("请输入承认暗码").CheckValue("1")
   if err != nil {
      fmt.Println("CheckValue传入不为空时:" + err.String()) // 请输入承认暗码
   } else {
      fmt.Println("CheckValue传入不为空时:校验通过")
   }
}

进阶示例打印成果

GoFrame数据校验之校验目标 | 校验结构体

示例2:Map数据校验

params := map[string]interface{}{
	"passport":  "",
	"password":  "wangzhongyang",
	"password2": "zhongyang",
}
rules := map[string]string{
	"passport":  "required|length:6,16",
	"password":  "required|length:6,16|same:password2",
	"password2": "required|length:6,16",
}
messages := map[string]interface{}{
	"passport": "账号不能为空|账号长度应当在:min到:max之间",
	"password": map[string]string{
		"required": "暗码不能为空",
		"same":     "两次暗码输入不相等",
	},
}
err := g.Validator().Messages(messages).Rules(rules).CheckMap(params)
if err != nil {
	g.Dump(err.Maps())
}

履行后,终端输出:

{
    "passport": {
        "length": "账号长度应当在6到16之间",
        "required": "账号不能为空"
    },
    "password": {
        "same": "两次暗码输入不相等"
    }
}

示例3:Struct数据校验

type User struct {
	Name string `v:"required#请输入用户名字"`
	Type int    `v:"required#请挑选用户类型"`
}
data := g.Map{
	"name": "wangzhongyang",
}
user := User{}
if err := gconv.Scan(data, &user); err != nil {
	panic(err)
}
err := g.Validator().Data(data).CheckStruct(user)
if err != nil {
	fmt.Println(err.Items()) //[map[Type:map[required:请挑选用户类型]]]
}

总结

这篇文章为我们介绍了GoFrame数据校验之校验目标的知宫颈癌识点,包含:Validator公司让职工下班发手机电量截图目标常用办法的介绍、单数据校验、校验Map、校验结构体的示例。

最终

感谢阅读,欢迎我们三连:点赞、保藏、投币(重视)!!!github永久回家地址

GoFrame数据校验之校验目标 | 校验结构体