4

マークダウンを使用して記述された (Pandoc を使用して処理された) いくつかの静的ページのコンテンツを編集するための Yesod フォームがあります。マークアップを処理してフォームの下に結果を表示する「プレビュー」ボタンと、コンテンツをデータベースに保存する「送信」ボタンの 2 つのボタンが必要です。

Yesod でこれを行う最も簡単な方法は何ですか? Yesod ブックのすべてのフォーム例には、ボタンが 1 つだけあります。公開されている関数/API を見てきましたが、名前や値が異なる複数の送信ボタンをフォームに追加しても、どのボタンが押されたかを Yesod に通知させる方法がわかりません。

Yesod に複数のボタンがあり、さまざまなアクションをトリガーするフォームの簡単な例を誰か教えてもらえますか?

4

1 に答える 1

8

入力フォーム関数を使用して生の値を取得し、さまざまなボタンに name 属性を明示的に設定できます。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 に答える