我想知道如何为控制器方法添加可选的route参数:
目前,我有一条路线,如下所示:
Route::get('devices/{code}/{area}','HomeController@getDevices');
和控制器方法:
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的末尾。
所以你是一个明确的函数默认参数不正确的用法,如所描述这里。这就是您的代码无法按预期工作的原因。
考虑到您将需要某种前缀来区分它们,您必须颠倒这两个参数的顺序或为这些情况实现不同的方法:
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) {...}
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句