Laravel 没有向控制器方法传递/注入第二个参数

问题描述 投票:0回答:1

使用 Laravel 8,我有以下路线:

Route::resource('dummy/{optionalParams?}', 'Api\DummyController');

在控制器中,我有方法

public function index(Request $request, array $optionalParams)

但是显然这不会自动连接/注入,我什至尝试在其上方定义自定义路由:

Route::get('dummy/{optionalParams?}/', 'Api\DummyController@index');
- 仍然遇到同样的问题,错误看起来像:

ArgumentCountError 函数参数太少 App\Http\Controllers\Api\DummyController::index(), 1 传入 /var/www/vendor/laravel/framework/src/Illuminate/Routing/Controller.php 在第 54 行正好是 2 个预期

即使我将类型提示更改为常规

int
,或者对于第二个变量根本没有类型提示 - 同样的错误。

如果我在没有第二个参数的情况下执行

dd($request->input());
,它会按预期工作,对于看起来像这样的虚拟URL:
/api/dummy?optionalParams[]=1&OptionalParams[]=2
并且它可以输出:

^ array:1 [
  "optionalParams" => array:2 [
    0 => "1"
    1 => "2"
  ]
]

我可以那样工作并检索它,但我认为如果它被注入到控制器方法中,它会更好更干净,也更容易进行单元测试和 API 文档。

如何实现这一点,如果可能的话最好在单个

resource
路线声明中实现?

php laravel laravel-8
1个回答
-1
投票

公共函数索引(请求 $request, $optionalParams = array())

阅读更多... routage Laravel

© www.soinside.com 2019 - 2024. All rights reserved.