「Goravel 上新」驗證表單的三種新姿勢,估計你只用過一種

Bowens發表於2022-12-27

驗證使用者輸入的資料是我們開發中最常見的需求,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!

本作品採用《CC 協議》,轉載必須註明作者和本文連結
唯有所執,方有所成。

相關文章