gpt4 book ai didi

php - Laravel 5 覆盖路由资源参数

转载 作者:可可西里 更新时间:2023-11-01 00:39:48 25 4
gpt4 key购买 nike

我在资源 Controller 后面使用了一些网络路由。所以路线看起来很简单:

Route::resource('account', 'AccountController');

我还有一个网络中间件,用于检查 Request 对象中是否设置了 user_id 参数:

if ($request->user_id) {
// do stuff
}

问题是这样的。在我的非资源 route ,我使用类似的东西:

Route::get('agentnotes/{user_id}', 'UserNoteController@getUserNotes');

这会按预期设置 user_id 变量,中间件功能正常。

但是在资源路由中,即使实际路由方法使用了 user_id,中间件也看不到它。例如,AccountController::show 方法如下所示:

public function show($user_id)

但是中间件没有将 user_id 视为请求的一部分,我认为是因为在请求到达 Controller 之前它已经被触发了。

有没有办法在不重写所有资源路由的情况下处理这个问题?

最佳答案

根据 Laravel 文档:

By default, Route::resource will create the route parameters for your resource routes based on the "singularized" version of the resource name. You can easily override this on a per resource basis by passing parameters in the options array.

所以我不得不使用中间件期望的 user_id 覆盖默认值。

Route::resource('account', 'AccountController', ['parameters' => [
'account' => 'user_id'
]]);

关于php - Laravel 5 覆盖路由资源参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46943393/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com