Maison > développement back-end > Golang > le corps du texte

golang goookit validate ne fonctionne pas avec les validateurs personnalisés globaux

PHPz
Libérer: 2024-02-14 14:42:16
avant
719 Les gens l'ont consulté

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

L'éditeur PHP Banana a trouvé un problème lors de l'utilisation du gookit validate de golang, c'est-à-dire qu'il ne s'applique pas aux validateurs personnalisés globaux. gookit validate est une bibliothèque de validation pratique et puissante qui fournit de nombreuses règles de validation intégrées, mais il existe certaines limites dans la prise en charge des règles de validation personnalisées globales. Cela peut causer des problèmes aux développeurs, vous devez donc y prêter attention lorsque vous utilisez gookit validate. Ensuite, nous explorerons ce problème en détail et proposerons quelques solutions.

Contenu de la question

J'essaie d'utiliser le validateur golang goookit et d'ajouter un validateur personnalisé, mais la fonction n'est jamais déclenchée.

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")
    }
}
Copier après la connexion

Le résultat sera toujours réussi et le validateur personnalisé ne sera jamais appelé. Directement sur le terrain de jeu

solution de contournement

vous devez le mentionner explicitement dans configuration ,

Ne sautez pas les valeurs nulles

Comme indiqué ci-dessous :

validate.Config(func(opt *validate.GlobalOption) {
        opt.SkipOnEmpty = false
})
Copier après la connexion

Ensuite, exécutez le code et cela fonctionnera

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

source:stackoverflow.com
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal