gpt4 book ai didi

haskell - 跨多个字段的验证

转载 作者:行者123 更新时间:2023-12-02 14:02:51 24 4
gpt4 key购买 nike

我正在尝试理解应用表单,并且我一直想知道如何实现一个验证依赖于其他字段的字段的表单。例如,一个包含 passwordconfirm_password 字段的注册表单,我想验证 password == inform_password

我可以在表单运行后在处理程序中完成,但这意味着丢失错误消息。

编辑:忘了提及,我主要使用 Yesods 应用形式,但它们似乎与消化仿函数非常接近

最佳答案

您使用什么类型的表单系统?您可以使用 digestive-functors 轻松完成此操作,这是我的一份注册表单的示例:

registrationForm =
Registration
<$> "username" .: text Nothing
<*> "password" .: passwordConfirmer
where passwordConfirmer =
validate fst' $ (,) <$> ("p1" .: text Nothing)
<*> ("p2" .: text Nothing)
fst' (p1, p2) | p1 == p2 = Success p1
| otherwise = Error "Passwords must match"

在这里您可以看到我使用 passwordConfirmer 表单字段为“密码”字段生成了一个值。该字段使用 2 个文本字段并将它们放入一个元组中,但在验证后它只采用 fst 元素(尽管它可能采用 snd,但我们保证它们相等!)。

我的注册类型是:

data Registration = Registration
{ regUserName :: Text
, regPassword :: Text
}

关于haskell - 跨多个字段的验证,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12106964/

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