Heim  >  Artikel  >  Backend-Entwicklung  >  Golang Gookit Validate funktioniert nicht mit globalen benutzerdefinierten Validatoren

Golang Gookit Validate funktioniert nicht mit globalen benutzerdefinierten Validatoren

PHPz
PHPznach vorne
2024-02-14 14:42:16713Durchsuche

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
})

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

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!

Stellungnahme:
Dieser Artikel ist reproduziert unter:stackoverflow.com. Bei Verstößen wenden Sie sich bitte an admin@php.cn löschen