多个按钮形式导致无效参数错误

时间:2013-04-01 13:21:42

标签: haskell yesod

我想在工作的monadic get表单中添加另一个按钮,它会触发整个表单的不同处理(例如论坛帖子表单中常见的预览和提交按钮)。

所以我尝试按照this older question的答案提出建议:

首先,添加另一个命名输入按钮:

<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

不幸的是,它不起作用:每当我按下我的新按钮时,我得到一个无效的参数页面,说有一个无效的布尔值,其名称附加到第二个提交按钮。

与之前的问题不同的是,我使用的是GET表单而不是POST。但是,在我看来,我需要在原始形式中包含布尔字段,但在原始monadic形式中添加具有相同名称的可选布尔字段不会改变任何内容:

 _ <- mopt boolField ((String.fromString "preview") { fsName = "preview" }) Nothing

(我不知道如何处理这个mopt的结果,因为我既不需要视图(也不应该向用户显示额外的表单字段),也不知道结果(因为这是额外的runInputGet已经提供的内容) ))

1 个答案:

答案 0 :(得分:2)

如果查看boolField的代码,您会发现它对该值应该采用的格式有严格的要求。相反,您可能希望使用textField - 接受任何东西 - 然后简单地测试该值是否存在。