我正在使用Laravel 5.6应用程序并拥有以下两条API路径:
Route::resource('/partners', 'API\Partners\PartnersController');
Route::resource('/partners/{id}/sales-team', 'API\Partners\SalesTeamController');
在两个控制器中,我在构造方法中引用了自定义中间件“VerifyUserOwnsTeam”。
要从我以前拥有的中间件中获取请求中的资源ID:
$request->route('partner')
这是一个URL,如:
/api/partners/1
但是,我现在正在呼吁一个新的终点,例如:
/api/partners/1/sales-team
在我的中间件中,合作伙伴的请求路由参数为空。如果我将引用更改为:
$request->route('id')
然后它适用于后一个端点,但在第一个端点上失败则为空值。
知道如何保持这种一致性吗?
答案 0 :(得分:1)
我使用 laravel 8 并且在我的情况下得到了解决。 我已将来自路由器的参数 id 放入我的控制器中。然后使用紧凑函数传递 id 以在我的视图中使用。
这是代码示例
我的路由器:
Route::resource('stock/{id}', StockController::class);
我的控制器:
public function index($id, Request $request)
{
return View::make("pages.stock.index", compact('id'));
}
我的观点:
{{$id}}
不知道这对你的情况是否有效,但我希望你能得到一些线索。
答案 1 :(得分:0)
你需要改变你的第一条路线来接受一个id:
Route::resource('/partners/{id?}', 'API\Partners\PartnersController');
击> <击> 撞击>
答案 2 :(得分:0)
对于所有搜索者: 对于编辑/更新/删除操作中的资源,您可以使用
访问Request类中的模型ID$this->get('id')