Laravel请求URL中的帮助程序以获取ID /资源ID



我正在开发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') 

最新更新