ミドルウェアの使い方 [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
この記事を書いた人
![]() | 💻 ITスキル・経験 サーバー構築からWebアプリケーション開発。IoTをはじめとする電子工作、ロボット、人工知能やスマホ/OSアプリまで分野問わず経験。 画像処理/音声処理/アニメーション、3Dゲーム、会計ソフト、PDF作成/編集、逆アセンブラ、EXE/DLLファイルの書き換えなどのアプリを公開。詳しくは自己紹介へ |
プチモンテ代表、アーティスト名:プチモンテ | |
🎵 音楽制作 BGMは楽器(音源)さえあれば、何でも制作可能。歌モノは主にロック、バラード、ポップスを制作。歌詞は叙情詩、叙情的な楽曲が多い。楽曲制作は2023年12月中旬 ~ |
オリジナル曲を始めました✨
YouTubeで各楽曲を公開しています🌈
https://www.youtube.com/@petitmonte