LoginSignup
6
3

More than 3 years have passed since last update.

【Laravel】ミドルウェアを利用しよう!

Last updated at Posted at 2019-12-28

はじめに

今回はミドルウェアの実装方法について説明します。

ミドルウェアとは

ミドルウェアとは指定したアドレスにリクエストを送ると自動で処理を行う仕組みのことです
処理が行わられるタイミングは以下の2つの場合です
1. ビューからコントローラーにアクセスした時
2. コントローラーからビューにレスポンスを送る時

ミドルウェアの作成

では、実際にミドルウェアを作成しましょう
OldMiddlewareという名前のミドルウェアを作成します

ターミナル
php artisan make:middleware OldMiddleware

app/Http/Middleware/OldMiddleware.phpが作成されます。

ミドルウェアの編集

作成されたミドルウェアを編集します。
アクセスした時にアクションにリクエストを送る前に
ageの値が20以下ならhomeにリダイレクトさせる機能を実装します。

app/Http/Middleware/OldMiddleware.php
<?php

namespace App\Http\Middleware;

use Closure;

class OldMiddleware
{
    public function handle($request, Closure $next)
    {
        if ($request->input('age') <= 20) {
            return redirect('home');
        }

        return $next($request);
    }

}

return $next($request);でアクセスした先に$requestを送ります。

前処理

上記でアクションに送る前にミドルウェアを挿入する方法を説明しました。

<?php

namespace App\Http\Middleware;

use Closure;

class BeforeMiddleware
{
    public function handle($request, Closure $next)
    {
        // ここに前処理を書く

        return $next($request);
    }
}

後処理

次にアクションからレスポンスを返す時に挿入するミドルウェアの実装方法について説明します。

<?php

namespace App\Http\Middleware;

use Closure;

class AfterMiddleware
{
    public function handle($request, Closure $next)
    {
        $response = $next($request);

        // ここに処理を書く

        return $response;
    }
}

後処理は$response = $next($request);return $response;の間に書きます。

ミドルウェアの実行

上記の機能をアプリケーションから呼び出す方法を説明します。
indexにアクセスした時にOldMiddlewareに接続します。

routes/web.php
Route::get('/index', 'MyController@index')->middleware('OldMiddleware::class');

グローバルミドルウェア

グローバルミドルウェアとは全てのルートに対して呼び出されるミドルウェアのことです。
下記のようにapp/Http/Kernel.php$middlewareの変数内に追加しましょう

app/Http/Kernel.php
protected $middleware = [
//                      :
//                      :
     \App\Http\Middleware\OldMiddleware::class,
]

ミドルウェアのグループの利用方法

ミドルウェアグループの登録

複数のミドルウェアをグループ化してまとめることができます。
下記のようにapp/Http/Kernel.php$middlewareの変数内に
mygroupを追加しましょう

app/Http/Kernel.php
protected $middlewareGroups = [
//                      :
//                      :
    'mygroup' => [
         \App\Http\Middleware\OldMiddleware::class,
    ],
]

ミドルウェアグループの呼び出し

グループ化したミドルウェアを呼び出しましょう
上記で登録したmygroupを呼び出します。

routes/web.php
Route::get('/index', 'MyController@index')->middleware('mygroup');

以上でミドルウェアの利用方法の説明を終わります。

疑問、気になるところがございましたら、質問、コメントよろしくお願いします!!!

6
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
6
3