まとめ ブログ ダウンロード 掲示板 メール

れぶろぐ

< 2006-06-11 (日) 2006-06-14 (水) > 最新


2006-06-13 (火)

perform() と preforward() の使い分け

先日 にも例として出したコードだが、 テンプレート中でセレクトボックスの表示に使うこのような配列は、 どこで定義するのが妥当なのか?

$months = range(1, 12);
$this->af->setApp('months', $months);

最初、perform() の中にこのコードを書いていたが、 もしかするとこれは preforward() とやらに書くべきなのでは? そう思いながら処理の続きを書いてみて分かったが、 やはりこれは preforward() に書かないといけない。

以前書いた処理の順番 をもう少し詳しく書くと、

  1. アクションクラスの authenticate()
  2. アクションクラスの prepare()
  3. アクションクラスの perform()
  4. ビュークラスの preforward()
  5. テンプレートの表示

という順番で処理されていく。

return '******'; で遷移すると、 preforward() のところに飛んでいき、 perform() の処理は行われない。 だから、エラーで再入力を促す場合を考えると、 上のような処理は preforward() で行わないといけない。

逆に、編集画面の初期値を設定するような場合には、 もし preforward() でその処理を行ってしまうと、 入力のエラーで同じビューに戻ってきた場合に、 ユーザーがせっかく変更した値が上書きされてしまう。 だから、perform() 内で行うのが適切。

うん、ようやく分かってきた気がする。

Tags: Ethna | このエントリを含む del.icio.us | このエントリを含むはてなブックマーク | このエントリを含む livedoor クリップ | Permalink
本日のリンク元

編集