0

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

然后它适用于后一个端点,但在第一个端点上因空值而失败。

知道如何保持一致吗?

4

3 回答 3

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}}

Idk 这是否适用于您的情况,但我希望您能得到一些线索。

于 2021-06-18T09:55:09.583 回答
0

您需要更改您的第一条路线以接受 id:

Route::resource('/partners/{id?}', 'API\Partners\PartnersController');

于 2018-03-15T16:45:45.357 回答
-1

对于所有搜索者:对于编辑/更新/删除操作中的资源,您可以使用 Request 类中访问模型的 id

$this->get('id') 
于 2020-02-18T09:37:53.870 回答