ミドルウェアとは
リクエストがコントローラのアクションに届く前後に配置されるレイヤー層となるプログラムのこと。リクエストを受け取るとコントローラ処理の前後に割り込み、アクションの処理が実行される前後に独自の処理を実行する。
ミドルウェア作成方法
ターミナルで以下のコマンドを入力します。
php artisan make:middleware ミドルウェア名
app/Http/Middleware内に作成される。
public function handle($request, Closure $next)
{
return $next($request);
}
作成したミドルウェアクラスのなかにhandleメソッドというメソッドが1つだけがある。
- 第一引数はRequestインスタンスが渡される
- リクエストの情報を管理
- 第二引数はClosureクラスのインスタンス
- 無名クラス(クロージャ)
- $nextはRequestのインスタンス
このhandleメソッドにコントローラ前後に実行したい処理、新たなデータやmergeメソッドなど追記する。
コントローラの前に実行したい場合
public function handle($request, Closure $next)
{
-----処理-----
return $next($request);
}
コントローラの後に実行したい場合
public function handle($request, Closure $next)
{
$request = $next($request)
-----処理-----
return $request;
}
最後に利用するミドルウェアを呼び出す処理の追記が必要。
routes/web.phpにルート情報にミドルウェアの呼び出し処理を追記する。
Route::get(.....)->middleware(利用するミドルウェアクラス)->middleware(利用するミドルウェアクラス);
あとはコントローラとテンプレートの修正をすれば、ミドルウェア作成完了!
グローバルミドルウェア
グローバルミドルウェアは全てのアクセスで自動的に実行される。
app/Http/Kernel.phpのKernelクラスの$middlewareという変数の中にグローバルミドルウェアは配列としてまとめられている。
ここにルートを追記すれば、グローバルミドルウェアとなる。
ミドルウェアのグループ化
複数のミドルウェアを管理する。app/Http/Kernel.phpのKernelクラスの$middlewareGroupsという変数の中にミドルウェアのグループの配列がある。
この配列の中に、グループ名とルート情報を追記すれば、グループ化できる。
※ 備忘録目的の記事です