我正在开发Laravel 5.6应用程序,并且有以下两个API路由:
Route::resource('/partners', 'APIPartnersPartnersController');
Route::resource('/partners/{id}/sales-team', 'APIPartnersSalesTeamController');
在这两个控制器中,我在构造方法中引用了一个自定义中间件"VerifyUserOwnsTeam"。
要从我之前拥有的中间件中的请求中获取资源 ID,请执行以下操作:
$request->route('partner')
这适用于以下网址:
/api/partners/1
但是,我现在调用一个新的终点,例如:
/api/partners/1/sales-team
在我的中间件中,合作伙伴的请求路由参数为空。如果我将引用更改为:
$request->route('id')
然后,它适用于后一个终结点,但在第一个终结点上失败,生成 null 值。
知道如何保持一致吗?
我使用 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}}
Idk这对您的情况有效与否,但我希望您能得到一些线索。
您需要更改第一个路由以接受 id:
Route::resource('/partners/{id?}', 'APIPartnersPartnersController');
对于所有搜索者:对于编辑/更新/删除操作中的资源,您可以使用以下命令在请求类中访问模型的 ID
$this->get('id')