エラーで戻ったときにDBから取得した情報を表示したい
2008-01-25 - public class Monry extends Dairy implements Hatena
- 【前提条件】
- 入力画面で DB の情報を表示している
- 入力値のバリデーションが次のアクションで行われる
- 入力エラーが在った場合は入力画面に戻す
- 【問題点】
むむ.
これはなにをしたいのかな?と,一瞬よくわからなかったのだけど,【前提条件】を見る限り,いつもやってることだなぁと感じたので,そんなに難しいことをする必要があるのかな?と思った.
見た感じで考えられるのは,2つの場合があると思うんだけど,
1.DBからとってきた内容をデフォルト値として与え,ポストさせる.入力エラーで戻ってきたときにフォームの内容をDBの内容に戻して表示させたい
または,
2.入力エラーで元の画面に戻ったときに,DBからとってきた情報を表示させたい.(フォーム以外)
- 例えば,掲示板の返信とかがわかりやすいかな.「返信」をクリックすると,親記事(From DB)とフォームが現れる→POST→エラーで入力画面に戻ったときに親記事表示されないじゃん!みたいな.
まぁ,仮に,以下のとおりとしておきます.
- POST画面
- action : sample_post
- view : sample_post
- POST後画面
- action : sample_post_do
- view : ナシ(リダイレクト)
1.prepareでDBから取得
とりあえず,上から.
sample_post_doの
<?php // 着色料 ... class Sample_Action_SamplePostDo extends Sample_ActionClass { function prepare() { if ($this->af->validate() > 0) { /** * ここでDBから情報を取得して取得して(コードは略) **/ $this->af->set('hoge', $hoge); // としてフォームの値を上書き. } return null; } ... }
こうすれば,テンプレートがちゃんと記述されていれば,値は戻ります.
ちょっとこのテンプレートがちゃんと記述されていれば,が気になったんですけど...要するに,以下のとおり.
フォームヘルパを使ってない(非推奨 ((なぜならdefaultとか使えないから)))
<input type="text" name="hoge" value="{$form.hoge}" />
フォームヘルパを使っている
{form_input name="hoge"}
2.周りの内容が取得できない
sample_postのView(preforward)にDBから取得する内容を記述して万事解決.
(というか,表示用の内容ならそうするべきだと思うし)
はて
なにかご質問があればなんなりと...w