带有多个按钮的Yesod表格

时间:2011-08-13 16:20:34

标签: haskell yesod

我有一个Yesod表单,用于编辑某些静态页面的内容,这些页面使用markdown编写(使用Pandoc处理)。我想要两个按钮 - 一个“预览”按钮,用于处理标记并在表单下方显示结果,还有一个“提交”按钮,用于将内容保存到数据库中。

使用Yesod执行此操作的最简单方法是什么? Yesod书中的所有表格示例都只有一个按钮。我已经看过暴露的函数/ api,但即使我在表单中添加了多个具有不同名称和/或值的提交按钮,我也无法弄清楚如何让Yesod告诉我哪个被按下了。

任何人都可以给我一个简单的例子,说明在Yesod中有多个按钮,会触发不同的动作吗?

1 个答案:

答案 0 :(得分:7)

您可以使用输入表单函数来获取原始值,并在各个按钮上显式设置名称属性。 HTML中的类似内容:

<input type="submit" name="preview" value="Preview">

在Haskell代码中:

res <- runFormPost ...
isPreview <- runInputPost $ iopt boolField "preview"
if isPreview then ... else ...

很抱歉,如果这不是类型检查,我现在没有正常的开发系统。但我认为这是正确的一般方法。