4
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

Laravelでエラーハンドリング(エラー時の制御)を行う

Last updated at Posted at 2020-05-02

目次

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ファイル作成

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ファイル作成

post.blade.php
<html>
    <head>
        <title>sample</title>
    </head>
    <body>
        post送信画面
    </body>
</html>

(2) /sample/resources/views/layout/error.blade.phpファイル作成

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を描画しました

4
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
4
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?