LoginSignup
2
3

More than 5 years have passed since last update.

Lumen MiddlewareからControllerにパラメータを渡す方法

Posted at

元々パラメータをsessionに保存してControllerに使うつもりで、最初に考えた方法は

  • bootstrap/app.php に記述
  • ServiceProvider読み込みにフック
  • 設定ファイルの読み込み
  • エイリアスの登録
  • ミドルウェアに登録

ですが、うまく行きませんでした。

もっと簡単な方法でrequestに追加します。

$request->attributes->add(['user' => $user]);
return $next($request);

Controller側受け取る方法

use Illuminate\Http\Request;

public function index(Request $request)
{
    $user = $request->get('user');
}

Middlewareのサンプルソース

<?php

namespace App\Http\Middleware;

use Closure;
use App\Models\Entities\User;

class BeforeMiddleware
{
    /**
     * Handle an incoming request.
     *
     * @param  \Illuminate\Http\Request  $request
     * @param  \Closure  $next
     * @return mixed
     */
    public function handle($request, Closure $next)
    {
        $user['user_agent'] = $_SERVER['HTTP_USER_AGENT'];
        $user['ip'] = $_SERVER['REMOTE_ADDR'];
        $user['referer'] = $_SERVER['HTTP_REFERER'] ?? '';

        $userObj = new User();
        $userObj->setProperties($user);
        $request->attributes->add(['user' => $userObj]);

        return $next($request);
    }
}

それで解決。

2
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
3