
皆さん、お世話になります。
Zend frameworkで、練習として掲示板を作っていまして、
リダイレクトした時にデータを受け渡す方法を調べています。
環境
PHP5.2.8 + Zend framework1.7.1
windowsXP & Linux
■処理遷移
入力→確認→投稿完了
■画面遷移
トップ画面→確認画面→トップ画面
トップ画面で入力フォームと記事の表示を行い、投稿された時は確認画面を挟み、投稿が反映されたトップ画面へと戻ります。
投稿時、フォームより入力されたデータに問題が無い場合は確認画面へ遷移させますが、
不備があった場合、一度トップ画面へリダイレクトし、どの項目に不備があったかを入力欄の横に表示させてあげたいと思っています。
フォワードだとURLが変わってしまうので、リダイレクトを使っています。
どこの項目かというデータをリダイレクトした時に渡してあげたいのですが、なにか方法はありますでしょうか?
リダイレクトだとリクエストが全てリセットされてしまって、POSTなどで渡す事が出来ませんでした。
また、リダイレクト以外でURLを変えずに値を渡す方法などもあるのでしょうか?
まだまだ未熟で大した知識もございません。
どうぞよろしくお願いいたします<(_ _)>
A 回答 (2件)
- 最新から表示
- 回答順に表示
No.2
- 回答日時:
Zend_Filter_Inputを使うとsubmitしたときにバリデーションをかけることができます。
<?php
if ($_POST) {
$input = new Zend_Filter_Input($this->_filters, $this->_validators, $method, $options);
if ($input->isValid()) {
// DBへの処理
$res = $db->hoge($input->getUnescaped());
if ($res) {
$this->view->result = true;
} else {
$this->view->result = false;
$this->view->assign($_POST);
}
} else {
$errors = $input->getInvalid();
$this->view->e = $errors;
$this->view->assign($method);
}
}
エラー時はview側で $this->e でエラー原因がとれます。
<input type="text" name="email" value="<?php echo if (isset($this->email) ? $this->email : '' ?>
とかすればpostされた値がフォームに入ります。
No.1
- 回答日時:
リダイレクトだとか、フォワードだとか使わず。
入力画面->確認画面
の途中にバリデート処理をかけてるんだと思います。
バリデートを正常に通過したら、確認画面のテンプレートを。
バリデートで異常だったら、エラーメッセージをアサインして入力画面のテンプレートを
って切り替えるだけです。
回答、ありがとうございます!
私の勘違いだったら申し訳ないのですが、
テンプレートの切り替えというと
$this->_helper->viewRenderer()を使うという事でしょうか?
今、トップ画面(indexAction:index.phtml)から
確認画面(confirmAction:confirm.phtml)へと遷移し、
確認画面の時に入力チェックを行っているのですが、
viewRendererで切り替えると、画面表示は大丈夫ですが、URLが確認画面のものになってしまいます。
やりたい事としては、
/bbs/ トップ画面
↓
/bbs/index/confirm/ 確認画面
↓
エラー
↓
/bbs/ トップ画面(エラーメッセージも表示)
トップ画面へ戻してあげた時に、一緒にエラーに関するデータも送ってあげたいと思っています。
私が無知で本当に申し訳ないのですが、
もう少しだけ具体的にお教え願えますでしょうか。
よろしくお願いします!!
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- PHP php 確認表示画面で値をSESSIONから取り出す理由の解釈は正しいでしょうか? 1 2023/06/09 17:39
- PHP php 入力画面から確認表示画面へ情報の受け渡しについて。 1 2023/06/07 18:00
- PHP PHPで入力フォームでデータを確認表示画面まで送る流れを日本語で理解したいのです。 1 2023/05/29 19:12
- PHP 掲示板のセキュリティについてアドバイスお願い致します 1 2023/08/11 20:44
- gooブログ ブログの記事を書きだしのみに表示したい 1 2022/06/25 19:11
- その他(Microsoft Office) エクセルでの作成データをモニター画面内に収めたい。 1 2022/04/23 11:52
- Android(アンドロイド) Androidスマホのデータ移行が終わらない 1 2023/08/04 17:25
- C言語・C++・C# 【C++】IDirect3DSurfaceのディープコピーは可能ですか? 1 2022/07/06 02:47
- MySQL 「掲示板のログイン画面」はPHP~MySQLに「データベース認証のシステム」方式です。 1 2022/09/27 05:00
- JavaScript ①入力フォーム→②確認表示画面→③送信完了画面のコードを書いているのです、 入力フォームから受け取っ 2 2022/05/10 16:45
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
perlの結果を自動表示?
-
[件名]前の画面に戻ると「webペ...
-
アイフォン使ってたらちょくち...
-
メールフォームの確認画面が表...
-
htmlからbatファイルを起動する
-
フォームラン(https://form.ru...
-
お問い合わせフォームから送信...
-
ビジネスメールの敬称
-
Googleフォームを回答したか確...
-
テキストボックスの番号を使っ...
-
教えて!全角文字「μ」の半角
-
エクセルVBA テキストボックス...
-
EXCEL VBA で指定した範囲に入...
-
VBAでInputBoxの再入力をさせる...
-
ビルダー20 お問合せフォー...
-
携帯電話においてのパスワード...
-
DataGridView 列ごとの入力制限
-
DATE型変数を初期化する方法
-
初歩的な事だと思います。 Sub...
-
数字以外の入力をエラーにする...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
htmlからbatファイルを起動する
-
アイフォン使ってたらちょくち...
-
メール送信フォームとhistory.b...
-
戻ると入力したフォームの内容...
-
ウェブサイト上のボタンを自動...
-
ページ移動した場合の、フォー...
-
大学の出欠確認でQRコードを読...
-
Zend framework リダイレクトで...
-
階層式のプルダウンセレクトを...
-
メールフォームの確認画面が表...
-
RealSystem Producer BasicをDL...
-
非同期通信で掲示板を作る際の...
-
子画面から親画面に値を返す方法
-
掲示板のセキュリティについて...
-
編集不可で固定とするため とは
-
PHPとSQLiteのアップロードにつ...
-
PHPで特定の文字列を抽出する方法
-
ブラウザの「戻る」ボタンを押...
-
SQL insert文のシングル・ダブ...
-
accessでフォームを希望の入力...
おすすめ情報