Laravelでリクエストの前後に共通の処理を行う

Laravelでリクエスト毎に共通の処理をさせるには、ミドルウェアという仕組みを使います。

ミドルウェア 7.x Laravel

ミドルウェアを使うためにやる事は以下3つです。

  1. ミドルウェアクラスを作成する
  2. ミドルウェアのhandleメソッドでリクエスト毎の処理を実装する
  3. 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でレスポンスをJSON形式で返す

LaravelでレスポンスをJSONP形式で返す

Laravelでクエリパラメータを取得する

LaravelでPOSTされたデータを取得する

Laravelでルートパラメータ(パスパラメータ)を取得する

Laravelでリクエストパラメータがあるかチェックする

LaravelでフォームのMethodをPUTやDELETEに変える

Laravelでリダイレクトする

Laravelでフォームリクエストの型を定義してバリデーションする

Laravelのコントローラのアクションでモデル型を受け取る(モデル結合ルート)

Laravelで現在表示しているページのURLを取得する

LaravelでCookie(クッキー)の取得、書き込み、削除をする

Laravelで定数を使う

Laradock

Laradockをインストールする

Laradockのworkspaceの共有ディレクトリを変更する

データベース

Laravelでデータベースにテーブルを追加する

Laravelでデータベースのテーブル名を変更する(マイグレーション)

LaravelでデータベースにInsertする。

Laravelでデータベースのテーブルにカラムを追加する(マイグレーション)

Laravelで指定したカラムの次にカラムを追加する(マイグレーション)

Laravelでテーブルのカラム名を変更する(マイグレーション)

Laravelのmigrationでテーブルにunique制約を追加する

Laravelで強制的にmigrationを実行する

Laravelでマイグレーションのロールバックを行う

ルーティング

LaravelでAPIのルーティングを追加する

Laravelで特定のプレフィックスがついたURLのルーティングをまとめて定義する

Laravelのルーティングファイルを追加する

ミドルウェア

Laravelでリクエストの前後に共通の処理を行う

Laravelで特定のルーティングに共通の処理を入れる

認証

Laravelで未ログインユーザーがアクセスしたらログインフォームを表示する

LaravelのViewでログイン状態によって表示切替する方法

Laravelでログイン状態かどうかをチェックする

Laravelでログイン中のユーザーの情報を取得する

Laravelでログイン中のユーザー情報を更新する

多言語対応

Laravelで現在のロケールを取得する

コマンドライン

Laravelでコマンドラインアプリケーションを作る

タイトルとURLをコピーしました