GoFrame框架数据校验之校验对象校验结构体_第1页
GoFrame框架数据校验之校验对象校验结构体_第2页
GoFrame框架数据校验之校验对象校验结构体_第3页
GoFrame框架数据校验之校验对象校验结构体_第4页
GoFrame框架数据校验之校验对象校验结构体_第5页
全文预览已结束

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

第GoFrame框架数据校验之校验对象校验结构体目录前言摘要基本概念方法介绍简要说明注意问题TIPS链式操作示例1:单数据校验简单示例进阶示例进阶示例打印结果示例2:Map数据校验示例3:Struct数据校验总结

前言摘要

这篇文章将会为大家介绍GoFrame数据校验中校验对象的知识点,包括:Validator对象常用方法的介绍、单数据校验、校验Map、校验结构体的示例。

基本概念

数据校验组件提供了数据校验对象:用于数据校验统一的配置管理,支持我们便捷的进行链式操作。

方法介绍

typeValidator

funcNew()*Validator

func(v*Validator)CheckMap(paramsinterface{})Error

func(v*Validator)CheckStruct(objectinterface{})Error

func(v*Validator)CheckValue(valueinterface{})Error

func(v*Validator)Clone()*Validator

func(v*Validator)Ctx(ctxcontext.Context)*Validator

func(v*Validator)Data(datainterface{})*Validator

func(v*Validator)I18n(i18nManager*gi18n.Manager)*Validator

func(v*Validator)Messages(messagesinterface{})*Validator

func(v*Validator)Rules(rulesinterface{})*Validator

简要说明

New()方法用于创建一个新的校验对象。CheckValue/CheckMap/CheckStruct方法用于特定参数类型的数据校验,我们在项目开发中使用比较多的是CheckStruct,也建议大家使用CheckStruct。Ctx()方法用于传递Context上下文变量。I18n()方法用于设置当前校验对象的I18N国际化组件,默认情况下,校验组件使用的是框架全局默认的i18n组件对象。Data()方法用于设置需要校验的数据集合,支持map类型或者struct类型。Rules()方法用于传递当前链式操作校验的自定义校验规则,支持使用[]string类型或者map类型。Messages()方法用于传递当前链式操作校验的自定义错误提示信息,往往使用map类型传递,具体看后续代码示例。

注意问题TIPS

在数据校验对象的CheckValue/CheckMap/CheckStruct方法中,不存在Context上下文变量参数,而是通过链式操作的Ctx方法来控制。

GoFrame的g模块中定义了Validator方法来快捷创建校验对象:官方也推荐我们使用g模块的g.Validator()方式来快捷创建一个校验对象。

链式操作

示例1:单数据校验

简单示例

err:=g.Validator().Rules("min:60").Messages("考试不及格").CheckValue(16)

fmt.Println(err.String())//打印结果:考试不及格

进阶示例

packagemain

import(

"fmt"

"/gogf/gf/frame/g"

funcmain(){

data:=g.Map{

"password":"123",//这个的作用仅是定义了这个结构设置了默认值,并不代表着传入了值

//Data()中的参数是需要进行校验的数据集合,常用于map或者结构体类型。

//CheckValue()是输入的参数

err:=g.Validator().Data(data).Rules("required-with:password").Messages("请输入确认密码").CheckValue("")

iferr!=nil{

fmt.Println("CheckValue传入为空时:"+err.String())//请输入确认密码

}else{

fmt.Println("CheckValue传入为空时:校验通过")

err=g.Validator().Data(data).Rules("required-with:password").Messages("请输入确认密码").CheckValue("1")

iferr!=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)

iferr!=nil{

g.Dump(err.Maps())

执行后,终端输出:

{

"passport":{

"length":"账号长度应当在6到16之间",

"required":"账号不能为空"

"password":{

"same":"两次密码输入不相等"

示例3:Struct数据校验

typeUserstruct{

Namestring`v:"required#请输入用户姓名"`

Typeint`v:"required#请选择用户类型"`

data:=g.Map{

"name":"wangzhongyang",

user:=User{}

iferr:=gconv.Scan(data,amp;user);err!=nil{

panic(err)

err:=g.Validator().Data(data).CheckStruct(user)

iferr!=nil{

fmt.Println(

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论