我想知道如何为控制器方法添加可选的路由参数:
目前我有一条路线,如下所示:
Route::get('devices/{code}/{area}','HomeController@getDevices');
Run Code Online (Sandbox Code Playgroud)
和控制器方法:
public function getDevices($code=NULL,$area) {...}
Run Code Online (Sandbox Code Playgroud)
我的获取请求看起来像:
/devices/A/ABC
Run Code Online (Sandbox Code Playgroud)
它工作正常,但我希望{code}参数是可选的,以便我可以以不同的方式获取数据:
/devices//ABC or
/devices/ABC
Run Code Online (Sandbox Code Playgroud)
我已经尝试了以下内容,但所有失败的NotFoundHttpException
Route::get('devices/{code?}/{area}','HomeController@getDevices');
Route::get('devices/(:any?)/{area}','HomeController@getDevices');
谢谢你的帮助.
Ser*_*hiv 10
可选参数必须位于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);
}
Run Code Online (Sandbox Code Playgroud)
或者,正如我之前所说,反转参数:
Route::get('devices/area-and-code/{area}/{code?}','HomeController@getDevicesByAreaAndCode');
public function getDevicesByAreaAndCode($area, $code = NULL) {...}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
13697 次 |
| 最近记录: |