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.
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
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!