Maison  >  Article  >  développement back-end  >  Deux champs dans go-playground/validator/v10 doivent être vérifiés

Deux champs dans go-playground/validator/v10 doivent être vérifiés

WBOY
WBOYavant
2024-02-13 21:40:10642parcourir

需要验证 go-playground/validator/v10 中的两个字段

Pendant le processus de développement, nous devons souvent vérifier les données saisies par l'utilisateur. Lors du développement en langage Go, go-playground/validator/v10 est une bibliothèque de vérification très simple à utiliser. Il fournit des règles de vérification riches et des méthodes d'utilisation concises, qui peuvent nous aider à vérifier rapidement et efficacement la légalité des données. Dans cet article, l'éditeur PHP Xinyi expliquera comment utiliser go-playground/validator/v10 pour vérifier deux champs et donnera des exemples de code détaillés. Apprenons ensemble !

Contenu de la question

Besoin de vérifier qu'au moins un champ doit exister par e-mail, au moins un numéro de téléphone est requis

Actuellement, j'ai un validateur personnalisé

func validateEmailPhone(fl validator.FieldLevel) bool {
    user := fl.Top().Interface().(models.User)
    validate := validator.Validate{}

    if user.Email == "" && user.Phone == "" {
        return false
    }
    if user.Email != "" {
        if err := validate.Var(user.Email, "email"); err != nil {
            return false
        }
    }
    if user.Phone != "" {
        if err := validate.Var(user.Phone, "e164"); err != nil {
            return false
        }
    }
    return true
}

Mais très panique

L'utilisateur est un modèle gorm

Comment vérifier ces deux champs dans ce cas

Solution de contournement

Il contient beaucoup de balises conditionsrequired validator. Dans votre cas, vous aurez peut-être besoin de required_without_all + omitempty.

required_without_all - Rendre un champ obligatoire si tous les champs de la liste sont vides.

omitempty - Seul le champ peut être vide.

N'oubliez pas que les balises requises doivent précéder l'omimpty.

Exemple

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