2011/09/27

CakePHP でエラーの時のレイアウトファイルを変更する方法

エラーの時のレイアウトを default.ctp から他のレイアウトに変更したい。
そんなお話。

CakePHP のバージョンは 1.3.12 です。

ここを参考に app/app_error.php に AppError クラスを作ります。
AppError クラスは ErrorHandler を継承させます。
_outputMessage() メソッドをオーバーライドしてレイアウトを変更します。

完成はコチラ app/app_error.php
<?php
class AppError extends ErrorHandler
{
    function _outputMessage($template) 
    {
        $this->controller->layout = 'error';
        parent::_outputMessage($template);
    }
}

これで app/views/layouts/error.ctp をレイアウトファイルに指定することができました。