私は改革ライブラリのチュートリアルに従っています。現在、2 つの必須フィールドとその設定を含むフォームがあるため、各フィールドのエラー メッセージがそのすぐ隣に表示されます。
postForm :: MyForm MyRequest
postForm =
MyRequest <$> name <*> msg <* inputSubmit "post it!"
where
name = labelText "name:" ++>
(inputText "" `transformEither` required "Name is required") <++ br <++ errorList
msg = labelText "message:" ++>
(inputText "" `transformEither` required "Message is required") <++ br <++ errorList
たとえば、このフォームを空の状態で送信すると、検証が失敗し、ユーザーに再度入力するように求められ、次のようになります。
name: [______]
* Name is Required
message: [_____]
* Message is required
次のように、フォームの単一のエラー リストを作成する方法を知りたいです。
name: [______]
message: [_____]
* Name is Required
* Message is required
やってみた
postForm :: MyForm MyRequest
postForm =
(MyRequest <$> name <*> msg <* inputSubmit "post it!") <++ errorList
where
name = labelText "name:" ++>
(inputText "" `transformEither` required "Name is required") <++ br
msg = labelText "message:" ++>
(inputText "" `transformEither` required "Message is required") <++ br
しかし、エラーメッセージはまったく表示されません!
そのために必要な余分なボイラープレートがたくさんあるので、完全な実行可能な例を含めていません. ケースに関連するいくつかの関数の型シグネチャを次に示します。
type MyForm = Form (ServerPartT IO) [Input] ReqError H.Html ()
<++ :: (Monad m, Monoid view)
=> Form m input error view proof a
-> Form m input error view () ()
-> Form m input error view proof a
errorList :: (Monad m, ToMarkup error)
=> Form m input error Html () ()
http://hackage.haskell.org/package/reform-0.2.1/docs/Text-Reform-Core.html#v:-60--43--43-