はじめに
今回はミドルウェアの実装方法について説明します。
ミドルウェアとは
ミドルウェアとは指定したアドレスにリクエストを送ると自動で処理を行う仕組みのことです
処理が行わられるタイミングは以下の2つの場合です
1. ビューからコントローラーにアクセスした時
2. コントローラーからビューにレスポンスを送る時
ミドルウェアの作成
では、実際にミドルウェアを作成しましょう
OldMiddleware
という名前のミドルウェアを作成します
php artisan make:middleware OldMiddleware
app/Http/Middleware/OldMiddleware.php
が作成されます。
ミドルウェアの編集
作成されたミドルウェアを編集します。
アクセスした時にアクションにリクエストを送る前に
age
の値が20以下ならhome
にリダイレクトさせる機能を実装します。
<?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
に接続します。
Route::get('/index', 'MyController@index')->middleware('OldMiddleware::class');
グローバルミドルウェア
グローバルミドルウェアとは全てのルートに対して呼び出されるミドルウェアのことです。
下記のようにapp/Http/Kernel.php
の$middleware
の変数内に追加しましょう
protected $middleware = [
// :
// :
\App\Http\Middleware\OldMiddleware::class,
]
ミドルウェアのグループの利用方法
ミドルウェアグループの登録
複数のミドルウェアをグループ化してまとめることができます。
下記のようにapp/Http/Kernel.php
の$middleware
の変数内に
mygroup
を追加しましょう
protected $middlewareGroups = [
// :
// :
'mygroup' => [
\App\Http\Middleware\OldMiddleware::class,
],
]
ミドルウェアグループの呼び出し
グループ化したミドルウェアを呼び出しましょう
上記で登録したmygroup
を呼び出します。
Route::get('/index', 'MyController@index')->middleware('mygroup');
以上でミドルウェアの利用方法の説明を終わります。
疑問、気になるところがございましたら、質問、コメントよろしくお願いします!!!