gpt4 book ai didi

validation - Revel 中的表单输入验证

转载 作者:IT王子 更新时间:2023-10-29 01:43:13 25 4
gpt4 key购买 nike

我正在学习 Revel 并使用验证包对输入进行一些检查。我想看看数据库中是否已经存在带有“名称”的记录(我通过表单从用户那里获得输入),如果为真,则返回错误,否则创建一条记录。我能够验证(使用内置方法,如 Required、Maxlen ...)字段并在 HTML 中显示错误。但是对于我的自定义检查是将自定义验证器添加到验证包中,还是有一种方法可以将自定义键和错误添加到验证上下文中。我找不到如何将自定义键和消息添加到错误映射。谢谢。

最佳答案

revel 的 validators.Validator 界面如下所示:

type Validator interface {
IsSatisfied(interface{}) bool
DefaultMessage() string
}

*validation.Validation 有一个方法:

func (v *Validation) Check(obj interface{}, checks ...Validator) *ValidationResult

*validation.ValidationResult 有一个方法:

func (*ValidationResult) Message

综合起来:

type usernameChecker struct {}

func(u usernameChecker) IsSatisified(i interface{}) bool {
s, k := i.(string)

if !k {
return false
}

/* check if s exists in DB */
}

func(u usernameChecker) DefaultMessage() string {
return "username already in use"
}

在你的应用程序中:

func (c MyApp) SaveUser(username string) revel.Result {
c.Validation.Check(username, usernameChecker{}).Message("more specific or translated message in case of failure")
}

即使这不是我见过的设计最糟糕的验证库之一。

关于validation - Revel 中的表单输入验证,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24112433/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com