動作しているモナドの get フォームに別のボタンを追加したいと考えています。これにより、フォーム全体の別の処理がトリガーされます (フォーラムの投稿フォームでよく見られるプレビュー ボタンや送信ボタンなど)。
だから私はこの答えからこの古い質問へのアドバイスに従おうとしました:
まず、別の名前付き入力ボタンを追加します。
<input type="submit" name="preview" value="Preview">
次に、runInputGet への呼び出しを追加します。
((res,widget),enc) <- runFormGet myform
isPreview <- runInputGet $ iopt boolField "preview"
... -- pre-processing the form input, i.e. basic error checks
case (isPreview,res') of
(Just True, Just checkedRes) -> ... -- preview processing
( _ , Just checkedRes) -> ... -- proper processing
残念ながら、それは機能しません。新しいボタンを押すたびに、無効な引数ページが表示され、2 番目の送信ボタンに関連付けられた名前の無効なブール値があることが示されます。
前の質問との違いは、POST from ではなく GET フォームを使用していることです。ただし、元のフォームにブールフィールドを含める必要があるように見えますが、元のモナドフォームに同じ名前のオプションのブールフィールドを追加しても、何も変更されません。
_ <- mopt boolField ((String.fromString "preview") { fsName = "preview" }) Nothing
(ビュー(追加のフォームフィールドをユーザーに表示する必要はありません)も結果(これは追加のrunInputGetがすでに提供しているため)も必要ないため、このmoptの結果をどうするかわかりません))