我在routes.php中定义的路由类似于:
Route::get('something/{firstId}/{secondId}/{thirdId}/{nthId}', 'SomeController@read')->name('read');
在我的控制器中,我设置了这样的设置,完美无缺:
public function read($firstId, $secondId, $thirdId, $nthId, Request $request){
...
}
对于特定方法,我不需要$firstId
,$secondId
等。我只需要$nthId
。是否可以设置我的控制器,以便我可以抓住第n个参数并简化我的代码?例如:
public function read($nthId, Request $request){
...
}
答案 0 :(得分:2)
您可以使用可变参数设置参数列表前面的...
php.net arguments page上有一个有趣的标题,就是这样:
因此,在您的情况下,您将拥有:
public function read(Request $request, ...$ids){
$id2 = $ids[1]; //here is the second path parameter in /id1/id2/id3/..n
...
}
有一点是可变参数必须在声明中最后。
Ps:关于注入其他参数我可能不完全正确,但至少在上面的例子中,它可以正常工作。