目次
Laravelの記事一覧は下記
PHPフレームワークLaravelの使い方
Laravelバージョン
動作確認はLaravel Framework 7.19.1で行っています
Laravelのエラーハンドリング
Laravelでエラーが起こった場合に表示する画面を制御します
前提条件
eclipseでLaravel開発環境を構築する。デバッグでブレークポイントをつけて止める。(WindowsもVagrantもdockerも)
本記事は上記が完了している前提で書かれています
プロジェクトの作成もapacheの設定も上記で行っています
HTTPステータスコードのエラー画面
viewの作成
(1) /sample/resources/views/errorsフォルダ作成
(2) /sample/resources/views/errors/404.blade.phpファイル作成
<html>
<head>
<title>sample</title>
</head>
<body>
存在しないURLです
</body>
</html>
/resources/views/errors/HTTPステータスコード.blade.php
というファイルを作成しておけば、そのファイルが描画されます
動作確認
http://localhost/laravelSample/sample/notfound
実行結果
存在しないURLです
PHPのエラー画面
Controllerにメソッド追加
(1) /sample/app/Http/Controllers/SampleController.phpにpostメソッドを追記
public function post() { return view('sample.post'); }
(2) /sample/routes/web.phpに下記を追記
Route::post('sample/post', 'SampleController@post');
viewの作成
(1) /sample/resources/views/layout/post.blade.phpファイル作成
<html>
<head>
<title>sample</title>
</head>
<body>
post送信画面
</body>
</html>
(2) /sample/resources/views/layout/error.blade.phpファイル作成
<html>
<head>
<title>sample</title>
</head>
<body>
{{ $msg }}
</body>
</html>
Handler修正
(1) /sample/app/Exceptions/Handler.phpのrenderメソッドを修正
public function render($request, Throwable $exception)
{
if ($exception instanceof \Symfony\Component\HttpKernel\Exception\MethodNotAllowedHttpException) {
return response()->view('sample.error', ['msg' => "サポート外メソッドです"]);
}
return parent::render($request, $exception);
}
動作確認
http://localhost/laravelSample/sample/post
実行結果
サポート外メソッドです
post送信しか/sample/routes/web.phpに書かなかったのにgetアクセスしようとしたため
MethodNotAllowedHttpExceptionが発生しました
Handler.phpのrenderでその例外を判定してsample.errorを描画しました