自己紹介
- Qiita初投稿です。
- php歴は約7年
- laravel歴は3ヶ月
前提
- errorsフォルダに500に該当する画面を用意している(例:500.blade.php)
- 400番台以外のエラーは500ページを表示したい方
経緯
- 予期せぬエラーは500ページとしてまとめたかった。
カスタマイズ
app\Exceptions\Handler.phpを修正
これは他でも紹介されている通り、Handler.phpのrenderを修正します。
Handler.php
public function render($request, Exception $exception)
{
// 403,404などのHTTPエラー以外はerrors/500画面表示
if (!$this->isHttpException($exception)) {
return response()->view("errors.500");
}
return parent::render($request, $exception);
}
と、これで完成かと思ったら、
これも他でも紹介されているように
バリデーションエラーになった時にも500ページが。。。
バリデーションエラーまでも500ページにはしたくない。
app\Exceptions\Handler.phpを再修正
調べた結果、ValidationExceptionとなっていたものの、
namespaceで「\Illuminate\Validation\ValidationException」
となってました。
なので、下記のように修正しました。
Handler.php
public function render($request, Exception $exception)
{
// 403,404などのHTTPエラー, バリデーションエラー以外はerrors/500ページ表示
if (!$this->isHttpException($exception)
&&
!$exception instanceof \Illuminate\Validation\ValidationException
) {
return response()->view("errors.500");
}
return parent::render($request, $exception);
}
最後に
バリデーションエラーが500ページとなったので、どこかでコケたのかと思いましたが、
わかってみれば、なんてこともないことでした。
他にもこんなやり方があるよ、
そのやり方はよくないよ
などあれば、ぜひ教えて頂けると助かります。