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中文網其他相關文章!