gpt4 book ai didi

routing - Laravel 4 可选路由参数

转载 作者:行者123 更新时间:2023-12-04 17:01:11 26 4
gpt4 key购买 nike

我想知道如何为 Controller 方法添加可选的路由参数:

目前我有一条路线,如下所示:

Route::get('devices/{code}/{area}','HomeController@getDevices');

和 Controller 方法:
public function getDevices($code=NULL,$area) {...}

我的获取请求将如下所示:
/devices/A/ABC

它工作正常,但我希望 {code} 参数是可选的,以便我可以通过不同的方式获取数据:
/devices//ABC or 
/devices/ABC

我尝试了以下操作,但都失败了 NotFoundHttpException
Route::get('devices/{code?}/{area}','HomeController@getDevices');
Route::get('devices/(:any?)/{area}','HomeController@getDevices');

谢谢你的帮助。

最佳答案

可选参数需要位于 URL 的末尾。

所以你的明显错误使用了默认函数参数,如 here 所述.
这就是您的代码无法按预期工作的原因。

您必须颠倒这两个参数的顺序或为这些情况实现不同的方法,考虑到您需要某种前缀来区分它们:

Route::get('devices/area/{area}','HomeController@getDevicesByArea');
Route::get('devices/code-and-area/{code}/{area}','HomeController@getDevicesByAreaAndCode');

public function getDevicesByAreaAndCode($area, $code = NULL) {...}
public function getDevicesByArea($area) {
return $this->getDevicesByAreaAndCode($area);
}

或者,正如我之前所说,反转参数:
Route::get('devices/area-and-code/{area}/{code?}','HomeController@getDevicesByAreaAndCode');

public function getDevicesByAreaAndCode($area, $code = NULL) {...}

关于routing - Laravel 4 可选路由参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18846688/

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