この記事は以下の書籍を参考にして執筆しました。
HelloMiddlewareクラス
artisanのmake:middlewareでHelloMiddlewareクラスを作成し中身を見てみる
ミドルウェアの実行
handleメソッド
public function handle($request, Closure $next)
{
//実行する処理
}
引数 | 説明 |
---|---|
$request | Requestインスタンスが渡される |
Closure $next | クロージャ |
$routeMiddlewareへ追記
実際の登録作業
app/Http/Kernel.php
'hello'=>\App\Http\Middleware\HelloMiddleware::class
we.phpの修正
web.php
Route::get('アドレス','コントローラ名@アクションメソッド')->middleware(ミドルウェアクラス名::class)
前処理と後処理
前処理
public function handle($request, Closure $next)
{
//処理
return $next($request);
}
コントローラの前に実行する。
必要な処理をしてから$nextを実行してreturn
後処理
public function handle($request, Closure $next)
{
$response=$next($request)
//処理
return $response;
}
コントローラを実行した後に実行する
$nextでレスポンスを受け取ってから処理をする。
グローバルミドルウェア
$middleware
に追記して登録すると、web.phpにmiddlewareメソッドを書かなくても常にミドルウェアが実行される。
web.php
Route::get('アドレス','コントローラ名@アクションメソッド')->middleware(ミドルウェアクラス名::class)
↓
Route::get('アドレス','コントローラ名@アクションメソッド')
グループミドルウェア
Kernel.php
protected $middlewareGroups=[
'グループ名'=>[
ミドルウェアクラス::class,
],
];
web.phpのmiddlewareメソッドの引数にグループ名を指定。
web.php
Route::get('アドレス','コントローラ名@アクションメソッド')->middleware('グループ名')