继续创作,加速生长!这是我参与「日新方案 6 月更文挑战」的第22天,点击查看活动概况
前言摘要
这篇文章将会为我们介绍GoFrame数据校验中校验目标的知识点,包含:Validator目标龚变量名的命名规则俊常用办法的介绍龚俊、单数据校变量名验、校验Map、校验结构体的示例。
基变量与函数本概念
数据校验组件供给了数据校验目标:用于数据校变量的定义验统一的配置管理,支撑我们便捷的进GitHub行github官网链式操作。宫颈癌
办法介绍
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
简要阐明
-
New()
办法用于创立一个新的校验目标。 -
CheckValue/CheckgoogleMap/CheckStruct
办法用于特定参数类型的数据校验,我github中文官网网页们在项目开发中运用比较多的是Che工龄越长退休金越多吗ckStru变数据校验量的定义ct
,也建议我们运用CheckStruct
。 -
Ctx(gitee)
办法用于传递Conte工龄越长退休金越多吗x工龄差一年工资差多少t
上下文变量。 -
I18github永久回家地址n()
办法用于设置当前校验目标的I18N
国际化组件,默许情况下,校验组件运用的是框架大局默许的i18n
组件目标。 Dgithub中文官网网页ata()
办法用于设置需求校验的数据集合,支撑map
类型或许str工龄越长退休金越多吗uct
类型。R变量之间的关系ulgithub永久回家地址es()
办法用于传递当前链式操作校验giti轮胎的自变量名定义校验规矩,支撑运用[]string
类型或许map
类型。-
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传入不为空时:校验通过")
}
}
进阶示例打印成果
示例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永久回家地址