基本介绍
GoFrame 框架提供了功能强大、使用便捷、灵活易扩展的数据和表单校验组件,由 gvalid 组件实现。gvalid 组件实现了非常强大的数据校验功能,内置了数十种常用的校验规则,支持单数据多规则校验、多数据多规则批量校验、自定义错误信息、自定义正则校验、自定义校验规则注册、支持 i18n 国际化处理、支持 struct tag 规则及提示信息绑定等等特性,是目前功能最强大的 Go 数据校验模块。
数据校验设计的灵感来源于经典的 PHP Laravel 框架 https://laravel.com/docs/8.x/validation 感谢 Laravel ❤️
使用方式:
import "github.com/gogf/gf/v2/util/gvalid"
接口文档:
https://pkg.go.dev/github.com/gogf/gf/v2/util/gvalid
组件特性
gvalid 组件具有以下显著特性:
- 内置数十种常见数据校验规则,支持大部分业务场景
- 支持
Server层及命令行组件自动化校验 - 支持基础类型及复杂对象类型参数校验
- 支持顺序校验、灵活的校验结果处理
- 支持自定义校验错误提示
- 支持结构体属性递归校验
- 支持自定义校验规则
- 支持
I18n国际化特性
相关文档
📄️ 数据校验-校验规则
全面介绍`GoFrame`框架数据校验组件的内置校验规则及其应用。`GoFrame`框架内置数十项常用校验规则,包括修饰规则(`ci`、`bail`、`foreach`)和功能规则(`required*`系列、日期格式、数值范围、枚举值验证等),支持开发者在处理数据时进行参数校验和结构体校验。文档详细讲解了不同情况下各种校验规则的使用方法,为开发者提供灵活的数据校验机制。
📄️ 数据校验-校验对象
全面介绍`GoFrame`框架数据校验组件的`Validator`对象使用,包括校验对象的配置管理和便捷的链式操作。详细描述`New`、`Assoc`、`Bail`、`Ci`、`Run`等方法的使用,并通过单数据校验、`Struct`校验和`Map`校验的实际示例,帮助开发者快速掌握数据校验的使用技巧,支持自定义规则、错误提示和`I18N`国际化。
📄️ 数据校验-校验结果
详细介绍`GoFrame`框架数据校验的结果处理,描述`gvalid.Error`接口的实现及各种方法的使用。包括`Code`、`Error`、`Current`、`Items`、`Map`、`Maps`、`String`等方法的详细说明,通过不同方法获取校验错误信息。讨论顺序性和非顺序性校验对错误信息获取的影响,并演示如何通过`gerror.Current`获取第一条错误信息。
🗃️ 数据校验-参数类型
3 个项目
📄️ 数据校验-可选校验
详细讲解`GoFrame`框架数据校验组件中的可选校验规则使用方法。当校验规则中不包含`required*`规则时,对于`nil`或空字符串将忽略校验。通过空字符串、空指针属性、空整型属性和`map`传参四个实际代码示例,帮助开发者理解可选校验的处理逻辑及注意事项,需要特别注意`0`和`false`值仍会被校验。
📄️ 数据校验-递归校验
详细介绍GoFrame框架数据校验组件的递归校验(嵌套校验)特性。支持对struct、slice、map等复杂数据类型进行自动递归校验,通过多个实际示例演示如何对嵌套结构体、数组和映射类型数据进行有效验证。特别说明了空对象在递归校验中的处理规则,包括带有默认值的空结构体将被视为已传递对象并执行校验,而空指针对象则不会触发递归校验。
🗃️ 数据校验-自定义规则
2 个项目
📄️ 数据校验-自定义错误
介绍GoFrame框架数据校验组件如何通过i18n国际化特性自定义错误提示信息。详细讲解如何配置不同语言的错误提示文件,包括默认英文提示和中文提示的配置方法,以及如何在代码中通过上下文切换语言环境实现多语言错误提示。提供了完整的目录结构、配置文件示例和代码实现,帮助开发者快速实现国际化的数据校验错误提示功能。
📄️ 数据校验-方法介绍
全面介绍`GoFrame`框架数据校验组件的常用方法,详细描述`New`、`Run`、`Clone`、`I18n`、`Bail`、`Ci`等常用校验方法的使用。通过具体代码示例讲解如何使用这些方法进行有效的数据校验,并提供了定制化校验规则和错误提示的方法,帮助开发者更好地完成应用程序的数据校验工作。
📄️ 数据校验-常见问题
解决使用`GoFrame`框架进行数据校验时,`Struct`默认值对`required`规则的影响及其解决方案。提供三种解决方法:使用指针类型绕过默认值影响、使用组合校验规则弥补默认值影响、以及使用`Assoc`联合校验方法设置联合校验参数,确保校验准确性,特别适用于`Server`结构化`API`输入输出场景。