Haskell 跨多个字段的验证
我正在尝试探索应用程序表单,我一直想知道如何实现一个表单来验证依赖于其他字段的字段。例如,注册表单中有Haskell 跨多个字段的验证,haskell,yesod,digestive-functors,Haskell,Yesod,Digestive Functors,我正在尝试探索应用程序表单,我一直想知道如何实现一个表单来验证依赖于其他字段的字段。例如,注册表单中有password和confirm\u password字段,我想验证password==confirm\u password 我可以在窗体运行后在处理程序中完成,但这将意味着丢失错误消息 编辑:忘了提一下,我主要使用的是Yesods应用程序表单,但它们似乎与消化函数非常接近您使用的是哪种类型的表单系统?使用消化函子可以轻松完成此操作,以下是我的一个注册表单示例: registrationForm
password
和confirm\u password
字段,我想验证password==confirm\u password
我可以在窗体运行后在处理程序中完成,但这将意味着丢失错误消息
编辑:忘了提一下,我主要使用的是Yesods应用程序表单,但它们似乎与消化函数非常接近您使用的是哪种类型的表单系统?使用
消化函子
可以轻松完成此操作,以下是我的一个注册表单示例:
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"
我使用的是yesods应用程序表单,但这也是一个很好的答案
data Registration = Registration
{ regUserName :: Text
, regPassword :: Text
}