CakePHP2系でエラーページ用の処理をやってみる

CakePHP2系でエラーページ用の処理をやってみる

Kazuya Takato

Kazuya Takato

こんにちは、づやです。

実家のありとあらゆるところから野生のハチが出撃しています。まさにハチ要塞。

さて、前回の記事(CakePHP2系で404エラー画面を作る)で例外を投げたのですが、エラーページ表示の時に色々処理したいことがあったので、対応してみました。
もっといい方法があるかもしれませんが、とりあえず忘備録として。

1.エラーの時に独自のクラスを呼ぶようにする

まず、/app/Lib/配下に独自のハンドルクラスを作成します。
とりあえずCustomExceptionRendererクラスで行くことにしまして、まずはConfig/core.phpの73行目付近を、CustomExceptionRendererを使用するように書き換えます。

Configure::write('Exception', array(
		'handler' => 'ErrorHandler::handleException',
                 'renderer' => 'CustomExceptionRenderer', // ここを作成したクラス名
		'log' => true
	));

2.呼ばれるクラスを作る

次に/app/Lib/Error/CustomExceptionRenderer.phpを作成します。
中身はとりあえずデフォルトでつかっている/Cake/Error/ExceptionRenderer.phpをコピってクラス名とファイル名を適切に変更
基本的な処理は残したいので、ExceptionRendererを継承します。

App::uses('ExceptionRenderer', 'Error');
class CustomExceptionRenderer {
	public function __construct(Exception $exception) {
		// ここでやりたいことをごちゃごちゃやればよい
		// 今回はページタイトルをステータスコード 対応したメッセージに変更してみました
		$code = $exception->getCode();
		$codes = $this->controller->response->httpCodes($code);
                // 必要に応じて、setし直してあげる
		$this->controller->set('title_for_layout' , $code ." " . $codes[$code]);
	}
}

こんな感じで任意のページを表示することができました。

LIGはWebサイト制作を支援しています。ご興味のある方は事業ぺージをぜひご覧ください。

Webサイト制作の実績・料金を見る

この記事のシェア数

Kazuya Takato
Kazuya Takato 取締役 COO 兼 CTO / DX事業本部長 / 高遠 和也

1983年生まれ。SIerとしてのキャリアをスタートし、JavaやC#を中心に多岐にわたる開発プロジェクトにエンジニアとして参加。その経験を活かし、LIGを創業。バックエンドおよびフロントエンドエンジニアとしての深い知識と経験をもとに、多様なプロジェクトに従事。現在は、取締役COO兼CTO、DX事業本部長として、社内の体制やルールの最適化、AI技術の推進など、経営戦略の一翼を担う。

このメンバーの記事をもっと読む
デザイン力×グローバルな開発体制でDXをトータル支援
お問い合わせ 会社概要DL