Rumah  >  Artikel  >  pembangunan bahagian belakang  >  pengesahan golang gookit tidak berfungsi dengan pengesah tersuai global

pengesahan golang gookit tidak berfungsi dengan pengesah tersuai global

PHPz
PHPzke hadapan
2024-02-14 14:42:16713semak imbas

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

editor php Banana menemui masalah apabila menggunakan pengesahan gookit golang, iaitu, ia tidak terpakai kepada pengesah tersuai global. gookit validate ialah perpustakaan pengesahan yang mudah dan berkuasa yang menyediakan banyak peraturan pengesahan terbina dalam, tetapi terdapat beberapa batasan dalam menyokong peraturan pengesahan tersuai global. Ini mungkin menyebabkan beberapa masalah kepada pembangun, jadi anda perlu memberi perhatian kepada perkara ini apabila menggunakan pengesahan gookit. Seterusnya, kami akan meneroka isu ini secara terperinci dan menyediakan beberapa penyelesaian.

Kandungan soalan

Saya cuba menggunakan pengesah golang gookit dan menambah pengesah tersuai tetapi fungsi itu tidak pernah dicetuskan.

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

Hasilnya akan sentiasa berjaya dan pengesah tersuai tidak akan dipanggil. Teruskan ke taman permainan

penyelesaian

anda perlu menyebutnya secara jelas dalam konfigurasi ,

Jangan langkau nilai nol

Seperti yang ditunjukkan di bawah:

validate.Config(func(opt *validate.GlobalOption) {
        opt.SkipOnEmpty = false
})

Kemudian, jalankan kod dan ia akan berfungsi

Atas ialah kandungan terperinci pengesahan golang gookit tidak berfungsi dengan pengesah tersuai global. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Artikel ini dikembalikan pada:stackoverflow.com. Jika ada pelanggaran, sila hubungi admin@php.cn Padam