Middleware を利用して、ルートをグループ化し、共通事前処理を行う
app/Http/Middleware/ にMiddlewareファイルを生成
$ php artisan make:middleware HelloMiddleware
- Route::middleware に Middlewareクラスの配列を設定
- group() の引数は無名関数とし、各Routeを記述
Route::middleware([HelloMiddleware::class])->group(function() {
Route::get('/hello', 'HelloController@index')->name('test');
Route::get('/hello/user/{id}', 'HelloController@user')->where('id', '[0-9]+');
Route::get('/hello/bye', 'HelloController@bye');
Route::get('/hello/other', 'HelloController@other');
});
ルートで Middleware をルートすると、handle($request, Closure $next) が呼ばれるため Request をバインドしておく
public function handle($request, Closure $next)
{
$hello = 'Hello! This is Middleware!!';
$bye = 'Good-by, Middleware...';
$data = [
'hello' => $hello,
'bye' => $bye
];
$request->merge($data);
return $next($request);
}
Middlewareでバインドした Request を利用
public function index(Request $request)
{
$data = ['msg' => $request->hello];
return view('hello.index', $data);
}
public function bye(Request $request)
{
$data = ['msg' => $request->bye];
return view('hello.index', $data);
}