?您可以轻松地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
,我们保证它们是相等的!)。
我Registration
类型:
data Registration = Registration
{ regUserName :: Text
, regPassword :: Text
}
我使用yesods合用的形式,但这是很好的答案太 – Masse