Laravel 4可选路由参数

大卫编码器

我想知道如何为控制器方法添加可选的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');

谢谢你的帮助。

塞尔吉·帕拉西夫(Sergiu Paraschiv)

可选参数必须位于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] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

Laravel可选路由参数

来自分类Dev

Laravel路由可选参数问题

来自分类Dev

具有多个可选参数的Laravel路由

来自分类Dev

Laravel 5:路由可选参数问题

来自分类Dev

路由中的可选参数 - Laravel 5

来自分类Dev

Laravel 中可选参数的路由绑定

来自分类Dev

Laravel 4中的路由参数

来自分类Dev

使用可选参数LARAVEL 4进行分页

来自分类Dev

Laravel-使用可选参数重定向到路由

来自分类Dev

Laravel将可选参数路由到控制器

来自分类Dev

如何在 Laravel 路由中定义可选参数?

来自分类Dev

Laravel 5.5 路由中的可选参数不起作用

来自分类Dev

Laravel Mail的可选参数

来自分类Dev

如果可选参数不在列表中,Laravel处理默认路由

来自分类Dev

我可以在laravel路由中省略可选参数吗?

来自分类Dev

Laravel路由和路由参数

来自分类Dev

Laravel 多路由参数

来自分类Dev

laravel 路由名称参数

来自分类Dev

Laravel雄辩的查询与可选参数

来自分类Dev

Laravel同步与可选参数的关系

来自分类Dev

Laravel 4基本路由

来自分类Dev

Laravel可选参数缺少必需参数

来自分类Dev

laravel 5.1中的路由参数

来自分类Dev

Laravel 静态路由包含参数

来自分类Dev

多个可选参数路由

来自分类Dev

路由开头的可选参数

来自分类Dev

Laravel多个可选参数不起作用

来自分类Dev

Laravel多个可选参数不起作用

来自分类Dev

带有可选参数的Rails 4路由?