メイン CakePHP ビュー(View)
確認画面追加でバリデートエラーが表示されなくなった | 投稿するにはまず登録を |
| スレッド表示 | 新しいものから | 前のトピック | 次のトピック | 下へ |
| 投稿者 | スレッド |
|---|---|
| masa2 | 投稿日時: 2009-5-7 20:53 |
Baker 常連 ![]() ![]() 登録日: 2008-12-27 居住地: 投稿: 46 |
確認画面追加でバリデートエラーが表示されなくなった ブログチュートリアルで、add画面とデータ保存の間に「確認画面」を作ったのですが、
「確認画面」を作る前は、add画面で何も入力せずに「Save Post」ボタンを押すと テキストエリアの下に「This field cannot be left blank」と言うバリデートエラー メッセージが表示されていました。しかし、「確認画面」作ったら、このバリデート エラーメッセージが表示されなくなってしまいました。 add画面で何も入力せずに「Save Post」ボタンを押した時、バリデートエラーメッセ ージがまた表示される様にするには、どの様な工夫が必要なのでしょうか? アドバイス頂けると助かります。よろしくお願いします。 /app/models/post.php /app/controllers/posts_controller.php /app/views/posts/add.ctp /app/views/posts/confirm.ctp |
| ksz | 投稿日時: 2009-5-9 23:15 |
Baker スタート ![]() ![]() 登録日: 2009-5-9 居住地: 投稿: 11 |
Re: 確認画面追加でバリデートエラーが表示されなくなった バリデーションはモデルのsave前に行われ、エラーの表示はFormHelperのinput()を使用してフォームを出力した場合のみ自動的に行われるので、フォーム送信時に明示的にバリデーションを行い、確認画面に遷移するかどうかを分けると良いと思います。
/app/controllers/posts_controller.php |
| masa2 | 投稿日時: 2009-5-10 1:03 |
Baker 常連 ![]() ![]() 登録日: 2008-12-27 居住地: 投稿: 46 |
Re: 確認画面追加でバリデートエラーが表示されなくなった kszさん、アドバイスありがとうございます。
add画面で何も入力しないで「Save Post」ボタンを押すと、テキストエリアの下にバリデ ーションエラーメッセージが表示される様になりました。ありがとうございました。 $this->Post->validates()を利用するんだろうなあ。までは試していたのですが、 $this->Post->set($this->data);を記述する所に知恵が回りませんでした。 $this->Post->set($this->data);を記述しなくても、confirm.ctp画面でdata配列変数 の内容が表示されていましたので。 add画面でバリデーションエラーメッセージが表示されなかった問題は解決出来たのです が、今度は、「確認画面」で入力内容に不備が見付かった際、「戻る」ボタンで add画面に戻るのですが、add画面に戻ったら、折角入力したデータが消えてしまう様に なってしまいました。(以前は、入力データが残っており、add画面に表示されていた。) (この「確認画面」作成の考え方の根本が間違っているのかなあ?) |
| ksz | 投稿日時: 2009-5-10 2:18 |
Baker スタート ![]() ![]() 登録日: 2009-5-9 居住地: 投稿: 11 |
Re: 確認画面追加でバリデートエラーが表示されなくなった 戻るボタンの実装方法は色々あるみたいですが、例えばjavascriptではなくsubmitボタンのvalueで処理を分けるのはどうでしょうか?
submitであればコントローラの$this->dataにフォームの値も入ってくるので。 /app/controllers/posts_controller.php /app/views/posts/confirm.ctp ただFormHelper的にname属性を直接入れるのはあまり美しくない気がしますですね…orz 参考URL 戻るボタンの実装方法について |
| masa2 | 投稿日時: 2009-5-10 13:59 |
Baker 常連 ![]() ![]() 登録日: 2008-12-27 居住地: 投稿: 46 |
Re: 確認画面追加でバリデートエラーが表示されなくなった kszさん、希望通りに動作する「確認画面」が出来ました。ありがとうございました。
バリデーションエラーメッセージは表示されるし、「戻る」ボタンで戻った時も入力データ が保持されているし、希望通りの動きです。 kszさんのコードをヒントに、data[Post][mode]の変数内容情報で全体を制御する様にし てみました。 また「戻るボタンの実装方法について」の記事も参考になりました。 http://espion.just-size.jp/archives/06/167174521.html 「戻る」ボタンと「Save Post」ボタンがあった場合、エンターキーを押した時、 「Save Post」ボタンが機能する様にするのは、今後の課題としたいです。 /app/models/post.php /app/controllers/posts_controller.php /app/views/posts/add.ctp /app/views/posts/confirm.ctp |
| スレッド表示 | 新しいものから | 前のトピック | 次のトピック | トップ |
| 投稿するにはまず登録を | |



