【发布时间】:2014-04-13 23:42:26
【问题描述】:
我正在寻找路由到控制器以获得 GET URL,其参数的数量或它们在 URL 中出现的顺序可能会有所不同。可能有很多这样的组合,我想为所有这些 URL 调用相同的控制器操作
我的 URL 的外观示例:
- Route::get('route1/id/{id}', 'Controller1@controllerAction1');
- Route::get('route1/id/{id}/name/{name}', 'Controller1@controllerAction1');
- Route::get('route1/name/{name}', 'Controller1@controllerAction1');
- Route::get('route1/id/{id}/name/{name}/orderby/{orderby}', 'Controller1@controllerAction1');
- Route::get('route1/id/{id}/orderby/{orderby}', 'Controller1@controllerAction1');
同样在 Controller 动作中,我最终想把这个查询字符串分解成一个数组。对于上面提到的第二个示例,我希望将查询字符串id/{id}/name/{name} 转换为数组('id' => {id}, 'name' => {name})
要为所有不同的 URL 变体调用相同的控制器操作,我的 routes.php 中有以下代码:
Route::get('route1{all}', 'Controller1@controllerAction1')->where('all', '.*')
这似乎为上述不同类型的 URL 调用了 Controller1 的“controllerAction1”。
而在函数controllerAction1中,我正在做
$route_input = Route::input('all');
var_dump($route_input);
which prints "/id/1/name/xyz" when I hit http://example.com/laravel/public/route1/id/1/name/xyz
我想知道是否:
- 正在做 Route::get('route1{all}', 'Controller1@controllerAction1')->where('all', '.*') 是对的 为 get 的变量组合调用相同操作的方法 参数?
- Laravel 是否提供任何函数来转换 "/id/1/name/xyz" 到数组('id' => 1, 'name' => 'xyz') 或者我需要 写自定义函数?
- 有没有更好的方法来实现我的 要求?
【问题讨论】:
标签: laravel-4