Maison  >  Article  >  développement back-end  >  golang goookit validate ne fonctionne pas avec les validateurs personnalisés globaux

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

PHPz
PHPzavant
2024-02-14 14:42:16674parcourir

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

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

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!

Déclaration:
Cet article est reproduit dans:. en cas de violation, veuillez contacter admin@php.cn Supprimer