Nullyのぶろぐ

仙台で働くエンジニアの日記

モジュール毎にErrorHandlingを行う

この記事は古い記事で、正常に動作しない可能性が高い記事です。

ControllerPluginを自作した場合の記述例は「[Zend Framework]Module毎にErrorHandlerを定義する(改訂版)」に投稿されていますので、こちらもあわせて参照してください。

モジュール単位でErrorHandlingを行いたい場合があったので覚え書きとして。

モジュール単位でのエラーハンドラーの指定は必要か?

必要になる場面も少ないかとは思いますが、モジュール単位でやる理由としては「デザインが管理画面と一般ユーザー向けデザインが違う」などが有るため、モジュール別で分けてみます。

書いてみる

モジュール単位でErrorHandlingを行う場合はBootstrapなどに記述しておきます。

Bootstrapに記述するなら、application直下に有るBootstrapに記述します。

たとえば、Bootstrap内に「_iniErrorHandling」のようにメソッドを建て、中に以下のように記述します。

$this->bootstrap("FrontController");

$front = $this->getResource("FrontController") ;

$front->registerPlugin(new Zend_Controller_Plugin_ErrorHandler(array(

"module" => "[module_name]",

"controller" => "[controller_name]",

"action" => "[action_name]"

)));

複数のモジュールに対応する

複数のモジュールに対応するにはメソッドチェーンで記述していったりします。

$this->bootstrap("FrontController");

$front = $this->getResource("FrontController") ;

$front->registerPlugin(new Zend_Controller_Plugin_ErrorHandler(array(

"module" => "[module_name]",

"controller" => "[controller_name]",

"action" => "[action_name]"

)))

->registerPlugin(new Zend_Controller_Plugin_ErrorHandler(array(

"module" => "[module_name2]",

"controller" => "[controller_name2]",

"action" => "[action_name2]"

)));

何でもかんでも

Bootstrapに記述するのはあまり良くないとは思いますが、手っ取り早く扱うには便利っちゃ便利ですけどね。