ミドルウェアの使い方 [Laravel]
Laravelの「ミドルウェア」ではコントローラーが処理する前にログイン処理などを差し込む事が可能です。それに加えて、コントローラー/ビューの処理が終わった後にも何らかの処理をする事が可能です。

ミドルウェアのパターンは上記の二通りです。
1. 初期設定
1-1. ミドルウェアのファイルを生成する
php artisan make:middleware HelloMiddleware
app\Http\Middleware\HelloMiddleware.phpが作成される。
1-2. カーネルにミドルウェアを登録する
app\Http\Kernel.php
$routeMiddlewareの末尾に以下を追記する。
protected $routeMiddleware = [ 'hello' =>\App\Http\Middleware\HelloMiddleware::class, ];
1-3. ルーティングファイルの編集
routes\web.php
Route::get('/', 'RootController@index')->middleware('hello');
2. 各種ファイル
2-1. コントローラー(app\Http\Controllers\RootController.php)
<?php namespace App\Http\Controllers; use Illuminate\Http\Request; class RootController extends Controller { public function index(Request $request) { return view('index','hoge' => $request->hoge]); } }
2-2. ビュー(resources\views\index.blade.php)
{{ $hoge }}
2-3. ミドルウェア(app\Http\Middleware\HelloMiddleware.php)
<?php namespace App\Http\Middleware; use Closure; use Illuminate\Http\Request; class HelloMiddleware { public function handle(Request $request, Closure $next) { // (1)コントローラーの処理前 if ($request->option == "1"){ $request->hoge = $request->hoge . "456"; // コントローラー/ビューの処理実行 $response = $next($request); return $response; // (2)コントローラー/ビューの処理後 }else if ($request->option == "2"){ // コントローラー/ビューの処理実行 $response = $next($request); // 処理結果のHTMLを返す $content = $response->content(); // 文字列の置換 $content = str_replace("123", "123を書き換え", $content); $response->setContent($content); return $response; } } }
3. 実行
ミドルウェア1
http://localhost:8000/?hoge=123&option=1
結果は「123456」となる。
ミドルウェア2
http://localhost:8000/?hoge=123&option=2
結果は「123を書き換え」となる。
最後に
ミドルウェアはdump($response)で確認するとわかりやすいです。
スポンサーリンク
関連記事
公開日:2020年11月18日
記事NO:02856