CakePHP 2.4 でエラー時のlayoutを変更

app/Lib/Error/AppExceptionRenderer.phpを作成

必ず「Lib」の中の「Error」の中に作成する。そうしないとErrorHandlerがこのRendererを見つけられないので。

エラー表示時のlayoutとかを変更する記述を含める

App::uses('ExceptionRenderer', 'Error');
class AppExceptionRenderer extends ExceptionRenderer {

     protected function _outputMessage($template) {
               // ここでレイアウトファイルを指定
               if ($this->request->admin) {
                    $this->controller->layout = false;
               }else{
                    $this->controller->layout = 'default';
               }

               parent::_outputMessage($template);
     }

}

app/Config/core.phpの変更

Exception.rendererを作成したクラス名に変更

Configure::write('Exception', array(
          'handler' => 'ErrorHandler::handleException',
          'renderer' => 'AppExceptionRenderer',// 独自のRenderer
          'log' => true
     ));

あとは好きにView/Error/のファイルで表示内容調整

error404.ctpとかerror500.ctpとか

確認

core.phpのdebugを0にしないと確認できない

Configure::write(‘debug’, 0);

以下の様にthrowして確認可能

404確認する。

throw new NotFoundException('Could not find that post');

500確認する。

throw new FatalErrorException('msg');

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です