GoFrame实现顺序性校验示例详解

GoFrame实现顺序性校验示例详解

目录

引言

基本介绍

无序的原因

顺序校验

总结

引言

在上一篇文章中 GoFrame数据校验之校验结果 | Error接口对象 ,关于顺序与非顺序性校验没有做充分的介绍。

这篇文章填上之前留的坑,我们以map校验举例:

基本介绍

我们通过上一篇文章了解到:Error接口对象的方法,其顺序性只有使用顺序校验规则时有效,否则返回的结果是随机的。

即使我们使用FirstItemFirstString()等其他方法获取校验结果也是一样,返回的校验结果不固定。

无序的原因

因为校验的规则我们传递的是map类型,而golangmap类型并不具有有序性(底层数据结构是hashmap),因此校验的结果和规则一样是随机的,同一个校验结果的同一个校验方法多次获取结果值返回的可能也不一样了。

顺序校验

我们来举个栗子:

校验结果中如果不满足required那么返回对应的错误信息,否则才是后续的校验错误信息;

也就是说,返回的错误信息应当和我设定规则时的顺序一致。

代码示例如下:

package main import ( "fmt" "github.com/gogf/gf/v2/frame/g" "github.com/gogf/gf/v2/os/gctx" ) func main() { var ( ctx = gctx.New() params = map[string]interface{}{ "passport": "", "password": "wangzhongyang", "password2": "wangyang", } rules = []string{ "passport@required|length:6,16#账号不能为空|账号长度应当在{min}到{max}之间", "password@required|length:6,16|same:password2#密码不能为空|密码长度应当在{min}到{max}之间|两次密码输入不相等", "password2@required|length:6,16#", } ) err := g.Validator().Rules(rules).Data(params).Run(ctx) if err != nil { fmt.Println(err.Map()) fmt.Println(err.FirstItem()) fmt.Println(err.FirstError()) } }

执行后,终端输出:

map[length:账号长度应当在6到16之间 required:账号不能为空]
passport map[length:账号长度应当在6到16之间 required:账号不能为空]
账号不能为空

可以看到,上述的执行结果是满足顺序性的。

我们来总结一下:我们想要校验结果满足顺序性,只需要将rules参数的类型设置为[]string,按照一定的规则设定即可,并且msgs参数既可以定义到rules参数中,也可以分开传入(使用第三个参数)。

rules的这种满足顺序性校验结果返回的规则,我们称之为gvalid tag

下一篇文章为大家剖析gvalid tag的知识点。

总结

通过这篇文章,我们已经拿到了实现顺序性校验的金钥匙:只需要将rules参数的类型设置为[]string,按照一定的规则设定即可,并且msgs参数既可以定义到rules参数中,也可以分开传入。

以上就是GoFrame实现顺序性校验示例详解的详细内容,更多关于GoFrame顺序性校验的资料请关注易知道(ezd.cc)其它相关文章!

推荐阅读

    360手机助手校验dex优化文件失败怎么办

    360手机助手校验dex优化文件失败怎么办,手机助手,文件,支持,音乐,智能手机,获取,  360手机助手校验dex优化文件失败,有可能是手机内存不足了。

    crc校验错误怎么办

    crc校验错误怎么办,校验,输入,系统,错误,硬件,文件,crc校验错误的解决办法:1、重新下载个安装包;2、在解压时勾选“保留错误文件”,然后查看杀毒软

    css如何实现旋转效果(代码示例)

    css如何实现旋转效果(代码示例),属性,元素,过渡效果,画中,控制,常用,CSS是应用广泛的网页样式设计语言,旋转是其中一个常用的效果。通过CSS实现旋

    递归函数代码示例

    递归函数代码示例,递归,函数,本文目录递归函数代码示例编写一个递归函数计算从1加到100的和c语言函数递归调用c语言类函数递归调用的简单

    如何校验SQL查询结果是否准确

    如何校验SQL查询结果是否准确,订单,数据,总结平常工作中几种校验数据的思路 1、对比其他渠道数据结果查询需求:从Hive端查询20190909当天的

    ECC校验是什么

    ECC校验是什么,错误,内存,校验,内存错误,纠错,发现,  ECC内存即纠错内存,简单的说,其具有发现错误,纠正错误的功能,一般多应用在高档台式电脑/服

    PHP字典树|Trie树定义与实现方法示例

    PHP字典树|Trie树定义与实现方法示例,节点,单词,字符串,搜索,所,本文实例讲述了PHP字典树(Trie树)定义与实现方法。分享给大家供大家参考,