前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >「Goravel 上新」验证表单的三种新姿势,估计你只用过一种

「Goravel 上新」验证表单的三种新姿势,估计你只用过一种

原创
作者头像
韩同学的简单逻辑
发布2022-12-27 21:54:19
2830
发布2022-12-27 21:54:19
举报
文章被收录于专栏:GoravelGoravel

验证用户输入的数据是我们开发中最常见的需求,Goravel 提供三种验证姿势,个个简单好用!

第一种:简单直接式

根据表单内容直接校验:

代码语言:txt
复制
func (r *PostController) Store(ctx http.Context) {
  validator, err := ctx.Request().Validate(map[string]string{
    "title": "required|max_len:255",
    "body": "required",
  })
}

第二种:自由定义式

自定义验证数据:

代码语言:txt
复制
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 创建一个「表单请求类」,并定义规则:

代码语言:txt
复制
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) {

}

然后校验:

代码语言:txt
复制
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!

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 第一种:简单直接式
  • 第二种:自由定义式
  • 第三种:优雅文艺式
  • 关于 Goravel
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档