ZendFrameWorkでエラーコントローラを使おうとした時のお話し。

ZendFrameWorkのコントローラは初めからエラー処理が組み込まれてるから、ErrorControllerとerrorActionを作ってあげるだけで、本当なら終わりなのですが、このErrorControllerはデフォルトのモジュールの物が呼ばれる仕様なのに、実行中のモジュールの物が呼ばれると勘違いしてマニュアルを漁ってしまいました。

以上で終わりなので、後はてきとーにサンプルコード(for me)。


defaultモジュール以外のエラーコントローラを呼ぶ方法

$front = Zend_Controller_Front::getInstance();
$plugin = new Zend_Controller_Plugin_ErrorHandler();
$plugin->setErrorHandlerModule('nonedefault');
$front->registerPlugin($plugin);

よく忘れるのが、これ。ZendFFのプラグインはなんか最後にレジストしてあげないとダメなのね。

もちろん、「setErrorHandlerController()」や「setErrorHandlerAction()」を使ってアクションやコントローラの設定も可。


開発環境とかで、例外が発生した場合にエラー内容を表示させる設定にしてると、エラーコントローラは呼び出されないようなので気をつけましょう。

$front = Zend_Controller_Front::getInstance();
$front->throwExceptions(true);// 例外を出力 = エラーアクションを不使用