やったこと

webサービスを作るときに考えたことを垂れ流します

cakePHP 2でエラー404ページを作りたい

CakePHP(2.x系)でエラー404ページを作る方法です。

いろんなブログにやり方が書いてありますが、どれも試してもなかなかうまくいかない・・。

そんな中で、自分が試してうまくいった方法を書きます。

(ちなみに下記作業は /Config/core.php の debugを0にセットした本番環境の設定で行ってます)


■その1 error400.ctpファイルを編集する
「app/View/Errors/error400.ctp」のファイルを編集します。
ここでセットした内容が404エラー時に出力されます。

お目当てなのは「404エラー」ですが、CakePHPでは404エラーのとき400番のエラーファイルが参照されるようです。

設定パラメータがいろいろ面倒なので、私の場合はヒアドキュメントで出力したい内容のHTMLを丸ごと全部記述しました。

<?php
$this->layout = "error";

echo <<< EOF
//ここに出力したいHTMLを全て記述
EOF;
?>

異常系出力ページを作りたい場合は「error500.ctp」ファイルに同じ修正を加えるとできます。


■その2 レイアウトファイルを編集する
「app/View/Layouts/error.ctp」を作成します。

その1の作業で「layout = "error"」をセットしてるため、レイアウトとしてこのファイルを参照するようになります。

設定パラメータがいろいろ面倒なので、私の場合は下記のように「error400.ctp」のヒアドキュメントの内容を丸ごと出力するようにしました。

//たった一行!
<?php echo $this->fetch('content'); ?>


以上です!