?您可以輕鬆地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