Laravelの404エラーの返し方とエラーページの作成

Laravelのエラー制御とエラーページの表示

純粋にstatus code 404を返す方法

Laravelで404エラーをレスポンスする簡単な方法は、routes.phpでエラーイベントを検知できるように設定するやり方があります。

具体的にはroutes.phpで以下のとおりコーディングすることで、

/ (ルート)

および

SampleControllerで定義されていないパス

については404エラーを返すことが出来ます。

Route::controller('/', 'SampleController');

Event::listen('404', function()
{
  return App::abort(404);
  //return Response::error('404');
});

レスポンスオブジェクトを利用したやり方をコメントにしてありますが、APPオブジェクトのやり方と同等の効果を得ることが出来ます。

エラーページの作成

404エラーを返すと同時にエラーページを表示するためには、

app/start/global.php

を使います。

global.phpには、

Application Error Handler

という設定項目があるので、その部分にエラーページのviewを表示するコードを追加します。

App::error(function(Exception $exception, $code)
{
  Log::error($exception);
  return Response::view('error/404', array('message' => $exception->getMessage()), $code); //この行を追加
});

エラーページを表示する設定とエラーメッセージをエラーページに渡すコードを追加したので、エラーページを以下のパスに作成します。

app/views/error/404.blade.php

404.blade.phpがエラーページになるので、カスタマイズしたHTMLをコーディングします。今回は以下のHTMLにしました。

<h1><?php echo $message; ?></h1>
<h2>404 Not Found</h2>

存在しないURLにアクセスすると以下のとおりエラーページが表示されました。

laravel-error-page

global.phpに追加するコードを分岐処理してステータスコードに応じたエラーページを表示することもできるようになります。

switch ($code)
{
  case 503:
    return Response::view('error/503', array(), 503);
  default:
    return Response::view('error/404', array(), $code);
}

Webエンジニアブログにコメント

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

Laravelの404エラーの返し方とエラーページの作成の記事にコメントを投稿