コントローラ内のアクションによって、データベースから次のIDが生成され、参照として画面に表示されます。ユーザーがリフレッシュをクリックしたときに、アクションが再度呼び出されないようにするにはどうすればよいですか。Zendフレームワークでフォームを再送信しないようにしますか?
答えて
あなたは302を使用して、これらのページ
- form.php
- processForm.php
- displayId.php
header('HTTP/1.1 302 Found');
header('Location: displayId.php?id=5');
die();
をリダイレクト実装することによってこれを行うことができます
Form.phpはフォームのみを表示し、POST経由でデータをprocessForm.phpに送信します。 processForm.phpの中でデータを解析し、displayId.phpにGETパラメータで表示したいリダイレクトを発行することができます。
ユーザーがページ(displayId.php)をリフレッシュすると、フォームデータが再処理されないこの方法です。
Zend Frameworkを使用したリダイレクト後のパターンは通常、フォームのアクションを空にして(それ自体にポストします)、フォームを再度表示したくないときにリダイレクトする(成功すると) 。
public function newAction() {
$form = new Form_Foo();
if($this->_request->isPost()) {
if($form->isValid($this->_request->getPost()) {
//save or whatever
return $this->_redirect('path/to/success');
}
// else fall through
}
$this->view->form = $form;
}
フォームデータが有効な場合、私はそれに対して何らかの処理を行います。処理の出力を、ユーザーがリダイレクトされたビューページに渡すにはどうすればよいですか? – db83
if ($this->isPost()) {
// Check validation
if ($error) {
$dataToMove = array();
// $dataToMove is array that you want to pass with redirect
// It can be an array of errors or form data that user has entered
// Use FlashMessenger helper to pass data to redirection via Zend_Session
$this->_helper->getHelper('FlashMessenger')->addMessage($dataToMove);
// And redirect page to form url
$this->_helper->getHelper('Redirector')->goToUrl('/form/url/');
}
// If not posted, get data from FlashMessenger
$data = $this->_helper->getHelper('FlashMessenger')->getMessages();
// And assign to view or make that you want
$this->view->formData = $data;
私はリダイレクトして成功/エラーメッセージを残すことができるので、この回答が気に入っています。 –
これは古いポストの人々はまだ答えをここに来るので、私はもう少しを支援しましょうですが。
リダイレクトフォームは素晴らしいと便利ですが、我々はまだボタンをクリックして戻ってその方法を再送信からpepleを防止されていません。
解決策は、フォームをポップアップとして表示し、完了すると(jqueryで簡単に実行できます)、またはトランザクションごとに一意のIDを生成し、以前にidが使用されていたかどうかを確認することです。 の記事を参照してください。http://www.boutell.com/newfaq/creating/stoprefresh.html
はそれがお役に立てば幸いです。
私はあなたのZend Frameworkでこれを実行しようとしているが、私はちょうど私が同じ機能の後だと言っています知っています。すべてをZFに移動しましたが、この機能が組み込まれていないことにはかなり失望しています。
私はすべてのフォームをprocess.phpに送信して、すべてのGET、POSTリクエストを処理してから結果を保存しましたあなたの新しい場所にあなたをリダイレクトしました。
$ _SESSION ['post_data']が設定されていれば$ _POST = $ _SESSION ['post_data']となります。それをセッションから削除します。
これは素晴らしかったが、今私はZF:Dで同じことが必要になるだろうと私は言う...私は誰もがダイアログをデータを再送信することを求めて表示されたいと思っていないと思って少し失望..地獄それはあなたのエンドユーザに意味ですか?何もない!
- 1. PHPページでフォームを再送信しないようにする
- 2. 再生フレームワーク:送信ボタンが機能しないようです。
- 3. コントローラーのzendフレームワークにフォームを送信できません
- 4. Zend Frameworkをシミュレートして、Zend Framework 2/3でフォームを表示しないで送信しますか?
- 5. 送信ボタンで送信しないフォーム
- 6. jspページでフォームを重複して送信しないようにします。
- 7. 送信ボタンなしでPDFフォームを送信できますか?
- 8. Javascriptフォームを送信しないようにするには
- 9. VueJS/Semantic UIにフォームを送信しないようにする
- 10. zendフレームワーク2のlocalhostからメールを送信できません
- 11. jquery検証エンジンでフォームを送信しないようにします
- 12. リフレッシュ時にページを再送信しないようにする
- 13. フォームを送信し、それをリフレッシュしないようにします
- 14. フォームを送信しない
- 15. WKWebViewで "フォームを再度送信しますか?"
- 16. フォームを送信した後、インデックスページに再度購読フォームが表示されないようにする方法
- 17. 送信時にフォームでthis.valのみを送信しますか?
- 18. Zendフレームワークでフォームを送信する前にJavaScriptを使用して検証する方法
- 19. 再生フレームワーク--- HTML送信ボタンコントローラコード
- 20. IEが「フォーム送信」ボタンをPDFフォームに表示しないようにすることはできますか?
- 21. Expressで1回送信した後にデータを再送信しないようにする方法
- 22. yiiフレームワークでAjaxフォームを送信
- 23. 確認後にお支払いフォームを再送信しないようにしてください。
- 24. AngularJSフォーム送信しない
- 25. このzendフォームはどのように再作成しますか?
- 26. フォームを送信し、新しいページからajaxにフォームデータを送信します
- 27. フォームを2回送信しないようにするにはどうすればよいですか?
- 28. フォームの送信ボタンの値を送信していますか?
- 29. フォームをajaxで送信しますか?
- 30. フォームをiframeに送信しますか?
私はZend Frameworkの中でどのようにできるのかもっと興味があります。 – db83
実際には、302ではなく303を使用してください。 –
良い点、それを指摘してくれてありがとう、別のことを学んだ。 –