golang gookit validate 不適用於全域自訂驗證器

PHPz
發布: 2024-02-14 14:42:16
轉載
648 人瀏覽過

golang gookit validate 不适用于全局自定义验证器

php小編香蕉在使用golang的gookit validate時發現一個問題,即它並不適用於全域自訂驗證器。 gookit validate是一個方便且強大的驗證庫,它提供了許多內建的驗證規則,但在對於全域自訂驗證規則的支援上存在一些限制。這可能會給開發者帶來一些困擾,因此在使用gookit validate時需要注意這一點。接下來,我們將詳細探討這個問題,並提供一些解決方案。

問題內容

我正在嘗試使用 golang gookit 驗證器並新增自訂驗證器,但該函數從未被觸發。

package main import ( "fmt" "github.com/gookit/validate" ) type Sample struct { Name string `json:"name" validate:"required"` Addres string `json:"address" validate:"required"` Payment string `json:"payment" validate:"payment_method"` } func main() { validate.AddValidator("payment_method", func(val interface{}) bool { value, ok := val.(string) fmt.Println(value) if !ok { return false } if value != "hello" { return false } return true }) s := Sample{Name: "name", Addres: "address", Payment: ""} v := validate.Struct(&s) res := v.Validate() if !res { fmt.Println(v.Errors.OneError()) } else { fmt.Println("SUCCESS") } }
登入後複製

結果將始終是成功的,並且自訂驗證器永遠不會被呼叫。直接在 go playground 上

解決方法

您需要在配置中明確提及,

不跳過空值

如下:

validate.Config(func(opt *validate.GlobalOption) { opt.SkipOnEmpty = false })
登入後複製

然後,運行程式碼,它就會工作

以上是golang gookit validate 不適用於全域自訂驗證器的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:stackoverflow.com
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板
關於我們 免責聲明 Sitemap
PHP中文網:公益線上PHP培訓,幫助PHP學習者快速成長!