讨论数量:
$request->offsetSet('merchant', ['id' => 11]);
这种相当于设置路由的 query 参数,可以配合 $request->offsetExists('merchant')
这个是正常逻辑
1. laravel 创建 $request ,并 `new controller`, 这个时候中间件未执行
2. 将 controller 传递到中间件, $next() 在后面
3. 普通方法可以看到参数 `merchant`
PS:刚想到的
你可以创建个 request 类,然后在初始化方法中设置数据,controller 使用这个 PostRequest
php artisan make:request PostRequest
其他 php 框架可能有这种控制器使用构造方法的思路,laravel 这里使用中间件,然后再 控制器中这样写,文档中复制的。
class UserController extends Controller
{
/**
* Instantiate a new controller instance.
*/
public function __construct()
{
$this->middleware('auth');
$this->middleware('log')->only('index');
$this->middleware('subscribed')->except('store');
}
}
然后在中间件中这样写:
// 中间件中
$request->merge(['test' => 111])
然后你就能在控制器的普通方法中拿到参数了。
推荐文章: