いままでは404のエラーくらいでしか使っていなかったのですが、ErrorHandlerに独自メソッドを追加してみたんです。でも、debugレベルが0になるとなんだか動かないんですよね。
んでもって、コードを読んでみましたよ。するとまぁコンストラクタの中に以下のような記述を見つけました。
- cake/libs/error.php
<?php function __construct($method, $messages) { 〜 中略 〜 if ($method !== 'error') { if (Configure::read() == 0) { $method = 'error404'; if (isset($code) && $code == 500) $method = 'error500'; } } } }
なるほどー、これですねぇ。というわけで、オーバーライドしてapp_error.phpで逃げることにしました。
- app/app_error.php
<?php function __construct($method, $messages) { 〜 中略 〜 // if ($method !== 'error') { if (!preg_match('/^error/',$method)) { if (Configure::read() == 0) { $method = 'error404'; if (isset($code) && $code == 500) { $method = 'error500'; } } } $this->dispatchMethod($method, $messages); $this->_stop(); }
とりあえずはこんな感じです。method名を判定している部分を、errorで始まるメソッド名を使えるように変更しました。1行だけの修正でなんとか回避。
あんまりキレイな方法ではないですが、まぁとりあえずはコレでいい、かな・・・?