Debugフィルタ案
http://d.hatena.ne.jp/bobchin/20060214/1139882975
http://d.hatena.ne.jp/bobchin/20060213/1139838115
デバッグフィルタですが、アクションが複数ある場合に問題があります。
それは、各アクションループごとにデバッグフィルタが走ってしまうのが原因です。
なので、最後のアクションループのときのみ実行させる必要があります。
次にアクションがあるかどうかを判断するだと、次のアクションが追加されるのは実はビューフィルタの中だったりするので正確にはビューフィルタ実行後でないと判断できません。
ということなので、かなーりビューに依存することにはなると思いますが、「ビューで何かしら出力をした」=「アクションは終わり」とみなして以下のようにしてみました。
※ConfigUtilsに変更があるためCVS版である必要があります。
Filter
function execute() { $log =& LogFactory::getLog(); $log->trace("Filter_Debugの前処理が実行されました", "Filter_Debug#execute"); $this->_preFilter(); $container =& DIContainerFactory::getContainer(); $filterChain =& $container->getComponent("FilterChain"); $filterChain->execute(); $log->trace("Filter_Debugの後処理が実行されました", "Filter_Debug#execute"); // ここを追加 $response =& $container->getComponent("Response"); if ($response->getResult() != null) { $this->_postFilter(); } }