「Goravel 上新」验证表单的三种新姿势,估计你只用过一种
2023-02-18 16:44:20 时间
验证用户输入的数据是我们开发中最常见的需求,Goravel 提供三种验证姿势,个个简单好用!
第一种:简单直接式
根据表单内容直接校验:
func (r *PostController) Store(ctx http.Context) {
validator, err := ctx.Request().Validate(map[string]string{
"title": "required|max_len:255",
"body": "required",
})
}
第二种:自由定义式
自定义验证数据:
validator, err := facades.Validation.Make(map[string]any{
"name": "Goravel",
}, map[string]string{
"title": "required|max_len:255",
"body": "required",
})
第三种:优雅文艺式
使用命令 go run . artisan make:request StorePostRequest
创建一个「表单请求类」,并定义规则:
package requests
import (
"github.com/goravel/framework/contracts/http"
"github.com/goravel/framework/contracts/validation"
)
type StorePostRequest struct {
Name string `form:"name" json:"name"`
}
// 验证授权
func (r *StorePostRequest) Authorize(ctx http.Context) error {
return nil
}
// 定义规则
func (r *StorePostRequest) Rules() map[string]string {
return map[string]string{
"title": "required|max_len:255",
"body": "required",
}
}
// 自定义错误信息
func (r *StorePostRequest) Messages() map[string]string {
return map[string]string{}
}
// 自定义字段名
func (r *StorePostRequest) Attributes() map[string]string {
return map[string]string{}
}
// 数据预处理
func (r *StorePostRequest) PrepareForValidation(data validation.Data) {
}
然后校验:
func (r *PostController) Store(ctx http.Context) {
var storePost requests.StorePostRequest
errors, err := ctx.Request().ValidateRequest(&storePost)
}
关于 Goravel
Goravel 是一个功能完备、具有良好扩展能力的 Web 应用程序框架。作为一个起始脚手架帮助 Golang 开发者快速构建自己的应用。
框架风格与 Laravel 保持一致,让 PHPer 不用学习新的框架,也可以愉快的玩转 Golang!致敬 Laravel!
Welcome star, PR and issues!
相关文章
- C++ "链链"不忘@必有回响之双向链表
- C++ STL 概述_严丝合缝的合作者
- C++ 栈和典型的迷宫问题
- C++ 使用栈求解中缀、后缀表达式的值
- C++从 STL 中的队列开始说起
- C++ 不知树系列之初识树
- C++ 不知树系列之认识二叉树(数组、链表存储的实现)
- C++ 不知树系列之二叉排序树(递归和非递归遍历、删除、插入……)
- C++ 不知图系列之基于邻接矩阵实现广度、深度搜索
- C++ 不知图系列之基于链接表的无向图最短路径搜索
- C++不知算法系列之集结基础算法思想
- C++不知算法系列之高精度数值的加、减、乘、除算法
- C++ 不知算法系列之初识动态规划算法思想
- C++ 不知算法系列之深入动态规划算法思想
- C++不知算法系列之排序从玩转冒泡算法开始
- C++ 不知算法系列之从希尔、归并排序算法中的分治哲学聊起
- C++ 数学与算法系列之认识格雷码
- C++数学与算法系列之排列和组合
- C++数学与算法系列之初等数论
- 不背锅运维:云原生下的CICD-3件套快速搭建合集:jenkins+harbor+gitlab