在 Golang ozzo-validation 中,如何验证依赖于另一个字段的字段?
例如,如果我有以下内容:
Run Code Online (Sandbox Code Playgroud)return validation.ValidateStruct(&c, validation.Field(&c.Name, validation.Required, validation.Length(5, 20)), validation.Field(&c.Gender, validation.In("Female", "Male")), validation.Field(&c.Email, is.Email), validation.Field(&c.Address),
如何添加验证,仅当电子邮件不为空时才需要地址?
您可以通过两种方式实现它 -
FieldRules根据前置条件值有条件地添加Email,即在创建字段规则时进行检查,然后将其提供给validation.ValidateStruct例如:
type Sample struct {
Name string
Gender string
Email string
Address Address
}
type Address struct {
// ... fields
}
func (s Sample) Validate() error {
var fieldRules []*validation.FieldRules
fieldRules = append(fieldRules, validation.Field(&s.Name, validation.Required, validation.Length(5, 20)))
fieldRules = append(fieldRules, validation.Field(&s.Gender, validation.In("Female", "Male")))
fieldRules = append(fieldRules, validation.Field(&s.Email, is.Email))
if len(strings.TrimSpace(s.Email)) > 0 {
fieldRules = append(fieldRules, validation.Field(&s.Address, validation.Required))
fieldRules = append(fieldRules, validation.Field(&s.Address))
}
return validation.ValidateStruct(&s, fieldRules...)
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
4757 次 |
| 最近记录: |