Laravelでリクエスト毎に共通の処理をさせるには、ミドルウェアという仕組みを使います。
ミドルウェアを使うためにやる事は以下3つです。
- ミドルウェアクラスを作成する
- ミドルウェアの
handle
メソッドでリクエスト毎の処理を実装する app/Http/Kernel.php
の$middleware
配列にミドルウェアを追加する
artisanコマンドでミドルウェアクラスのひな型を作ります。
> php artisan make:middleware Sample
Middleware created successfully.
最後の「Sample」というパラメタは任意のクラス名です。
上記のコマンドでapp/Http/Middleware/Sample.php
というファイルが作られます。
ファイルの中身は以下のようになっています。
<?php
namespace App\Http\Middleware;
use Closure;
class Sample
{
/**
* Handle an incoming request.
*
* @param \Illuminate\Http\Request $request
* @param \Closure $next
* @return mixed
*/
public function handle($request, Closure $next)
{
return $next($request);
}
}
このhandle()
メソッドにリクエスト毎に共通の処理を実装します。
$next($request);
の前に処理を書けば、コントローラのアクションが実行される前に実行されます。
~前略~
public function handle($request, Closure $next)
{
// ここに書くとリクエストが処理される前に実行される
return $next($request);
}
~後略~
アクション実行後に処理させたければ以下のようにします。
~前略~
public function handle($request, Closure $next)
{
$response = $next($request);
// ここに書くとリクエストが処理された後に実行される
return $response;
}
~後略~
ミドルウェアを実装したら、app/Http/Kernel.php
の$middleware
配列にミドルウェアを追加します。
~前略~
protected $middleware = [
\App\Http\Middleware\TrustProxies::class,
\App\Http\Middleware\CheckForMaintenanceMode::class,
\Illuminate\Foundation\Http\Middleware\ValidatePostSize::class,
\App\Http\Middleware\TrimStrings::class,
\Illuminate\Foundation\Http\Middleware\ConvertEmptyStringsToNull::class,
\App\Http\Middleware\Sample::class, // ← 追加する
];
~後略~
ミドルウェアを使ったリクエスト毎の共通処理の実装については以上です。
逆引きLaravel目次
Laravelでルートパラメータ(パスパラメータ)を取得する
LaravelでフォームのMethodをPUTやDELETEに変える
Laravelでフォームリクエストの型を定義してバリデーションする
Laravelのコントローラのアクションでモデル型を受け取る(モデル結合ルート)
LaravelでCookie(クッキー)の取得、書き込み、削除をする
Laradock
Laradockのworkspaceの共有ディレクトリを変更する
データベース
Laravelでデータベースのテーブル名を変更する(マイグレーション)
Laravelでデータベースのテーブルにカラムを追加する(マイグレーション)
Laravelで指定したカラムの次にカラムを追加する(マイグレーション)
Laravelでテーブルのカラム名を変更する(マイグレーション)
Laravelのmigrationでテーブルにunique制約を追加する
ルーティング
Laravelで特定のプレフィックスがついたURLのルーティングをまとめて定義する
ミドルウェア
認証
Laravelで未ログインユーザーがアクセスしたらログインフォームを表示する
LaravelのViewでログイン状態によって表示切替する方法