4

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

Yesod 最简单的方法是什么?Yesod 书中的所有表单示例都只有一个按钮。我查看了公开的函数/api,但即使我在表单中添加了多个具有不同名称和/或值的提交按钮,我也无法弄清楚如何让 Yesod 告诉我按下了哪个按钮。

谁能给我一个简单的示例,说明在 Yesod 中有多个按钮的表单,它们会触发不同的操作?

4

1 回答 1

8

您可以只使用输入表单函数来获取原始值,并在各种按钮上显式设置名称属性。在 HTML 中是这样的:

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

在 Haskell 代码中:

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

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

于 2011-08-13T19:44:22.647 回答