2

Yesod で確認ダイアログを作成する最も簡単な方法は何ですか? フォームが投稿されたときに、アクションを実行する前に確認を求めたい場合があります。ユーザーに別の確認ページを送信し、「はい」ボタンが押された場合に投稿されたデータを処理することで、これが機能すると思います。

setUltDestReferer などの関数を使用して、これが可能になるはずだと思います。問題は、Yesod でそれを行う最も簡単な/最も一般的な方法は何ですか? 理想的には、requireAuth のように、ハンドラー内の単一の関数呼び出しに要約する必要があります。

4

2 に答える 2

1

私がこの権利を理解したなら、あなたは

  1. 確認ページをレンダリングして、リクエストのそれ以上の処理を中止します。
  2. 「はい」ボタンのリンクをこのハンドラーに戻し、フラグを設定します。
  3. フラグが設定されている場合は、何もせずに代わりに要求を続行してください。

これにより、元のフォームデータをどのように持ち運ぶかという問題がすぐに発生します。これを解決する方法はいくつかあります。たとえば、セッションに保存するか、「はい」リンクにエンコードされたURLを含めることです。

後者のアプローチは機能しますが、少し面倒になる可能性があります。前者は、ユーザーが[戻る]ボタンを押したり、新しいタブでリンクを開いたりするときに問題を引き起こす可能性があります。これは、HTTPのステートレス設計に由来します。

代わりに、新しいAJAXハンドラーを作成し、JavaScriptを追加する方がクリーンな場合があります。

  1. ハンドラーを呼び出して、確認が必要かどうかを確認します。
  2. その場合の確認を表示します。
  3. ユーザーが[はい]をクリックした場合は、通常どおりフォームの送信を続行します。
于 2011-08-27T18:09:47.837 に答える
0

@hammarのアプローチを採用することをお勧めします。それが最善だと思います。何らかの理由でAJAXを選択できない場合は、最初のページから送信されたフォームデータを含む非表示のフォームを確認ページに配置することを検討できます。これは、を使用するとかなり簡単なはずrunRequestBodyです。

于 2011-08-27T18:14:09.837 に答える