【发布时间】:2018-04-07 04:35:12
【问题描述】:
我在资源控制器后面使用了一些网络路由。所以路线看起来很简单:
Route::resource('account', 'AccountController');
我还有一个 Web 中间件,用于检查 user_id 参数是否设置在 Request 对象中:
if ($request->user_id) {
// do stuff
}
问题是这样的。在我的非资源路线中,我使用类似:
Route::get('agentnotes/{user_id}', 'UserNoteController@getUserNotes');
这会按预期设置user_id 变量,并且中间件功能正常。
但是在资源路由中,即使实际路由方法使用user_id,中间件也看不到它。例如,AccountController::show 方法如下所示:
public function show($user_id)
但中间件没有将 user_id 视为请求的一部分,我认为是因为在请求到达控制器之前它已经被触发了。
有没有办法在不重写所有资源路由的情况下处理这个问题?
【问题讨论】:
标签: php laravel routing laravel-5.5