アクション設定ファイルによるビューの変更
思ったより難しい。
アクションは自由にチェーンがかけられるわけで・・複数のアクションのうち一つでもビュークラス書き換え設定が存在すれば、その時点でビューが書き換わってしまう。その後アクションチェーンによって普通のアクションが指定されることもあるわけだけれど、その場合は特にビューを指定しないのでビュークラスは書き換えられたままだ。
現実的には同一アクションで内容によってビュークラス自体を書き換えることは無いのかもしれないけれど、フレームワークの流れとしては有り得る。
ファイルのダウンロードなんかだと、ファイル名入力フォームからの変数によって出力をエラー用HTMLかファイルかに分けたいときもあるか・・。バイナリ出力用ビューを作った場合、うまく切り替えるには・・・うーん。
やっぱりアクションごとにビューを切り替えるのは無しにするかなぁ・・。JSONの場合は普通に
<?php class Ajax_Json_AnyAction { public $data; public function execute(){ ... // $this->dataの適当な処理 ... echo json_encode($this->data); exit; } } ?>
とかすればいいわけだし・・。でもアクションで表示を行っている上にexitは書きたくないな・・困った。
ビューフィルタで実装するべきかな。
<?php class Filter_View_Json { public function encode(View $view){ $vars = $view->getAllVars(); echo json_encode($vars); exit; } } ?>
まだこっちのがいいな。
これならアクションクラスはそのままで設定ファイルにフィルタを書くだけでいい。