この内容は古いバージョンです。最新バージョンを表示するには、戻るボタンを押してください。
バージョン:1
ページ更新者:T
更新日時:2019-04-01 00:46:12

タイトル: ミドルウェアを用いた処理の共通化
SEOタイトル: 【Laravel】ミドルウェアを用いた処理の共通化

特定のコントローラーの前後の処理をミドルウェアとして実装することで処理を共通化することが出来る。

以下の例では前処理と後処理の両方を実装する。

 

ミドルウェアの作成

php artisan make:middleware Before

php artisan make:middleware After

 

ミドルウェアの実装

■Before

<?php

namespace App\Http\Middleware;

use Closure;
use Log;

class Before
{
    public function
handle($request, Closure $next)
    {
        Log::info("Before");
       
return $next($request);
    }
}

 

 

■After

<?php

namespace App\Http\Middleware;

use Closure;
use Log;

class After
{
    public function
handle($request, Closure $next)
    {
       
$response = $next($request);
        Log::info("After");

        return $response;
    }
}

 

ミドルウェアのグループ化

app/Http/Kernel.phpでミドルウェアクラスをまとめてグループ化することが出来ます。

    protected $middlewareGroups = [
        'both' => [
            \App\Http\Middleware\Before::class,
            \App\Http\Middleware\After::class,
        ],        

    ];

 

全てのリクエストに対してミドルウェアの登録

app/Http/Kernel.phpにミドルウェアクラスを登録すると全てのリクエストに対してミドルウェアが実行される。

    protected $middleware = [
        \Illuminate\Foundation\Http\Middleware\CheckForMaintenanceMode::class,
        \Illuminate\Foundation\Http\Middleware\ValidatePostSize::class,
        \App\Http\Middleware\TrimStrings::class,
        \Illuminate\Foundation\Http\Middleware\ConvertEmptyStringsToNull::class,
        \App\Http\Middleware\TrustProxies::class,

        \App\Http\Middleware\Before::class,
        \App\Http\Middleware\After::class,

    ];

 

特定のルートに対してミドルウェアの設定

routes/web.phpに記述することで特定のルートに対してミドルウェアを登録することが出来る。

Route::get('/', 'Top\TopController@top')->middleware('both');