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

时间:2018-03-15 16:43:15

标签: php laravel laravel-5 laravel-middleware laravel-request

我正在使用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')

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

知道如何保持这种一致性吗?

3 个答案:

答案 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')