[Mac]容量を減らす
DIコンテナはじめ
freee SDKを Laravel で使ってみる
freee API を使ってみる
Segueを利用しない画面遷移
Xcode11.3 で XVim2 を利用する
Codable で JSONを読み込み
Webpack入門
MacからLaradock PostgreSQLで接続エラー
Mac で Laradock の構築
Dockerで不要なイメージを削除
yarn インストール&プロジェクト作成
Laravel 6.x 構築(Homestead編)
Composer インストール
nvm インストール
npm install が Mac でエラー
HTMLタグでカーソルが同時処理(ミラーリング)されてしまう
DI(依存性注入)
[Ubuntu]Let's Encryptで無料の証明書を利用する
[Apache]Apache2.4のアクセス制限が変更
[Ubuntu]rootのログインとsudo権限追加
タミヤ マイコンロボット工作セットをMacに接続してみた
pgAdimn4 でブラウザで開けなくなる
Java8 を HomebrewとjEnvで構築
Android Studio環境構築 2019
ロケールの再構築
vagrant グループに Apacheを追加
Linux2 Apache2 + PHP7.3 + PostgreSQL10
Anadondaの削除
[Mac]初期設定メモ(CentOS)
[Mac]PostgreSQL起動
FormRequest を利用したバリデーション
try-catch で Exception検知
[Debian]Node.js安定板インストール
Middlewareを利用したルートグループ化
namespaceを利用したルートグループ化
名前付きルートによるリダイレクト
artisanコマンド
IE11以下でclosest() を利用する
Karma と Mochaインストール
コンポーネントを親に登録
[脱jQuery]LoadingOverlay をネイティブで実装
Targetを利用せずに新規ウィンドウを開く(rel,class)
[脱jQuery]ネイティブでDrag&Dropやtableソート
[脱jQuery]$(document).on() をネイティブでコーディング
[Git].gitignore が反映されない
[Git]不要ファイル履歴削除
[GAS]Gmail指定ラベルの不要メール削除
UFJ API(開発用)を利用してみる
RuntimeException No application encryption key has been specified
2019/08/08
icon Middlewareを利用したルートグループ化

Middleware を利用して、ルートをグループ化し、共通事前処理を行う

Middleware生成

app/Http/Middleware/ にMiddlewareファイルを生成


$ php artisan make:middleware HelloMiddleware

ルートの設定(routes/web.php)

- 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 ファイルに共通処理を記述

ルートで 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);
    }

Controller ファイルで Middlewareを利用

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);
    }