问答 / 0 / 9 / 创建于 1年前 / 更新于 1年前
中间建的代码然后我想实现的效果
我想实现的效果是可以在构造方法里面拿到
求大佬解答!!!!
用路由参数或者session吧
$request->offsetSet('merchant', ['id' => 11]);
这种相当于设置路由的 query 参数,可以配合 $request->offsetExists('merchant')
$request->offsetExists('merchant')
// 中间件中 $request->merge(['test' => 111]) // 控制器中 $request->get('test')
这个是正常逻辑
1. laravel 创建 $request ,并 `new controller`, 这个时候中间件未执行 2. 将 controller 传递到中间件, $next() 在后面 3. 普通方法可以看到参数 `merchant`
博客:Laravel 中间件实现原理
PS:刚想到的
你可以创建个 request 类,然后在初始化方法中设置数据, controller 使用这个 PostRequest
php artisan make:request PostRequest
别琢磨了,拿不到,如楼上所说,controller 实例化先于中间件,除非请求中传了参才能在构造方法中拿到
其他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])
然后你就能在控制器的普通方法中拿到参数了。
这是为了做sass吗 让客户端放东西在请求头吧 我们以前是这样做的
我要举报该,理由是:
用路由参数或者session吧
这种相当于设置路由的 query 参数,可以配合
$request->offsetExists('merchant')
这个是正常逻辑
博客:Laravel 中间件实现原理
PS:刚想到的
你可以创建个 request 类,然后在初始化方法中设置数据, controller 使用这个 PostRequest
php artisan make:request PostRequest
别琢磨了,拿不到,如楼上所说,controller 实例化先于中间件,除非请求中传了参才能在构造方法中拿到
其他php框架可能有这种控制器使用构造方法的思路,laravel这里使用中间件,然后再 控制器中这样写,文档中复制的。
然后在中间件中这样写:
然后你就能在控制器的普通方法中拿到参数了。
这是为了做sass吗 让客户端放东西在请求头吧 我们以前是这样做的