Mas*_*sse 7 haskell yesod digestive-functors
我正在尝试使用应用程序表单,我一直在想如何实现一个验证依赖于其他字段的字段的表单.例如,注册表单有password和confirm_password字段,我想验证password == confirm_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"
Run Code Online (Sandbox Code Playgroud)
在这里,您可以看到我使用passwordConfirmer表单字段为我的"密码"字段生成了一个值.该字段使用2个文本字段并将它们放入元组中,但在验证之后它只需要fst元素(尽管它可以采用snd,但我们保证它们是相等的!).
我的Registration类型是:
data Registration = Registration
{ regUserName :: Text
, regPassword :: Text
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
302 次 |
| 最近记录: |