Laravelのミドルウェアを使って特定のルーティングに共通の処理を追加することができます。
ミドルウェアの基本的な使い方は以下です。
php artisan make:middleware [ミドルウェア名]
コマンドでミドルウェアの雛形を作ります。
# php artisan make:middleware Sample
Middleware created successfully.
app/Http/Middleware/Sample.php
というファイルが作られます。
このファイルのhandleメソッドに共通の処理を実装します。
<?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);
}
}
ミドルウェアを実装したら、app/Http/Kernel.phpの$routeMiddleware配列にミドルウェアを追加します。
~略~
/**
* The application's route middleware.
*
* These middleware may be assigned to groups or used individually.
*
* @var array
*/
protected $routeMiddleware = [
'auth' => \App\Http\Middleware\Authenticate::class,
'auth.basic' => \Illuminate\Auth\Middleware\AuthenticateWithBasicAuth::class,
'bindings' => \Illuminate\Routing\Middleware\SubstituteBindings::class,
'cache.headers' => \Illuminate\Http\Middleware\SetCacheHeaders::class,
'can' => \Illuminate\Auth\Middleware\Authorize::class,
'guest' => \App\Http\Middleware\RedirectIfAuthenticated::class,
'password.confirm' => \Illuminate\Auth\Middleware\RequirePassword::class,
'signed' => \Illuminate\Routing\Middleware\ValidateSignature::class,
'throttle' => \Illuminate\Routing\Middleware\ThrottleRequests::class,
'verified' => \Illuminate\Auth\Middleware\EnsureEmailIsVerified::class,
// ここに追加する
'sample' => \App\Http\Middleware\Sample::class,
];
~略~
最後にルーティングとミドルウェアの紐づけを行います。
// 一つずつ設定する場合
Route::get('/', 'HomeController@index')->middleware('sample');
Route::get('/mypage', 'MypageController@index')->middleware('sample');
group()を使ってまとめてミドルウェアの紐づけをすることも可能です。
// まとめて設定する場合
Route::middleware('sample')
->group(function () {
Route::get('/', 'HomeController@index');
Route::get('/mypage', 'MypageController@index');
});
これで「http://localhost/」と「http://localhost/mypage」にアクセスするとsampleミドルウェアの処理が実行されるようになります。
特定のルーティングに共通の処理を入れる方法は以上です。
逆引き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でログイン状態によって表示切替する方法