どのタイプのフォーム システムを使用していますか? これは で簡単に行うことができます。これdigestive-functors
が私の登録フォームの 1 つの例です。
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
}