Conditional Flows
This content is for v0.7. Switch to the latest version for up-to-date documentation.
If(condition, validation)
Section titled “If(condition, validation)”Merge another Validation only when the condition is true.
val := v. Is(v.String(username, "username").Not().Blank()). If(isAdmin, v.Is(v.String(role, "role").EqualTo("admin")))Do(func(*Validation))
Section titled “Do(func(*Validation))”Run arbitrary logic in the chain.
val := v. Is(v.String(username, "username").Not().Blank()). Do(func(val *v.Validation) { if isAdmin { val.Is(v.String(role, "role").EqualTo("admin")) } })When(condition, func(*Validation))
Section titled “When(condition, func(*Validation))”Like Do, but gated by a boolean.
val := v. Is(v.String(username, "username").Not().Blank()). When(isAdmin, func(val *v.Validation) { val.Is(v.String(role, "role").EqualTo("admin")) })Validity-gated helpers
Section titled “Validity-gated helpers”These evaluate validity from the current result and conditionally merge/execute:
IfPathValid,IfAllValid,IfAnyValid,IfValidWhenPathValid,WhenAllValid,WhenAnyValid,WhenValid
Use WhenValid when you want to skip costly work if validation already failed.