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

jpfvwuh4  于 2023-02-01  发布在  Go
关注(0)|答案(1)|浏览(206)

需要检查至少一个字段应该存在电子邮件,电话至少一个是必填的
目前我有自定义验证程序

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
}

但它的恐慌
用户是gorm模型
在本方案中,如何检查这两个字段

9nvpjoqh

9nvpjoqh1#

validator中有大量的条件required标记,在您的情况下,您可能需要required_without_all + omitempty
required_without_all-如果列表中的所有字段均为空,则使字段成为必填字段。
omitempty-仅允许字段为空。
请记住,required标记必须在omitempty之前。
Example

相关问题