LoginSignup
23
17

More than 3 years have passed since last update.

【Laravel】ミドルウェア操作方法

Last updated at Posted at 2019-06-18

ミドルウェアとは

リクエストがコントローラのアクションに届く前後に配置されるレイヤー層となるプログラムのこと。リクエストを受け取るとコントローラ処理の前後に割り込み、アクションの処理が実行される前後に独自の処理を実行する。

ミドルウェア作成方法

ターミナルで以下のコマンドを入力します。

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という変数の中にミドルウェアのグループの配列がある。
この配列の中に、グループ名とルート情報を追記すれば、グループ化できる。

※ 備忘録目的の記事です

23
17
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
23
17