我想在工作的单子获取表单中添加另一个按钮,这会触发对整个表单的不同处理(例如论坛帖子表单中常见的预览和提交按钮)。
因此,我尝试遵循此答案中对这个较旧问题的建议:
首先,添加另一个命名输入按钮:
<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 from。但是,在我看来,我需要在原始表单中包含布尔字段,但是在原始单子表单中添加一个具有相同名称的可选布尔字段根本不会改变任何内容:
_ <- mopt boolField ((String.fromString "preview") { fsName = "preview" }) Nothing
(我不知道如何处理这个拖把的结果,因为我既不需要视图(不应该向用户显示额外的表单字段)也不需要结果(因为这是额外的 runInputGet 已经提供的))