Golang Gookit Validate funktioniert nicht mit globalen benutzerdefinierten Validatoren

PHPz
Freigeben: 2024-02-14 14:42:16
nach vorne
718 Leute haben es durchsucht

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")
    }
}
Nach dem Login kopieren

结果将始终是成功的,并且自定义验证器永远不会被调用。直接在 go playground 上

解决方法

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

不跳过空值

如下所示:

validate.Config(func(opt *validate.GlobalOption) {
        opt.SkipOnEmpty = false
})
Nach dem Login kopieren

然后,运行代码,它就会工作

Das obige ist der detaillierte Inhalt vonGolang Gookit Validate funktioniert nicht mit globalen benutzerdefinierten Validatoren. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:stackoverflow.com
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage