Laravel 4 参数顺序可变的Laravel路由url
我正在研究如何为GET URL路由到一个控制器,该控制器的参数可以在数量上或在URL中出现的顺序上有所不同。可能有许多这样的组合,我想为所有这些URL调用相同的控制器操作Laravel 4 参数顺序可变的Laravel路由url,laravel-4,Laravel 4,我正在研究如何为GET URL路由到一个控制器,该控制器的参数可以在数量上或在URL中出现的顺序上有所不同。可能有许多这样的组合,我想为所有这些URL调用相同的控制器操作 我的URL的外观示例如下: 路由::get('route1/id/{id}', 'Controller1@controllerAction1'); 路由::get('route1/id/{id}/name/{name}', 'Controller1@controllerAction1'); 路由::get('route1/na
我的URL的外观示例如下:
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
我想知道:
routes.php
):- 您可以有一个只包含ID的路由,其中NAME和ORDERBY是可选的
- 如果没有传递ID,您可以拥有一个只有名称的路由,其中ORDERBY是可选的
请注意这与您的URL有多大的不同:在编写路由时放置路由比我建议的方式要复杂得多。
id/{id}/name/{name}
。如果您完全按照自己的方式需要它们,为什么不调用从GET函数传递变量的链接,如下所示
要将路由参数从一组单独的参数转换为包含Laravel 5中所有参数的数组,可以从控制器调用:
$routeParameters=$this->getRouter()->getCurrentRoute()->parameters()
用于路由定义
Route::get('route1/id/{id}/name/{name}','Controller1@controllerAction1');代码>
如果用户点击以下路径:/route1/id/2/name/john
$routeParameters
将等于
array(id=>2,name=>john')
感谢您的回复。我喜欢你的建议。我会尝试格式化。@user3402821不客气:)您能接受答案吗?否则其他人将浪费时间回答我将遵循yoursite.com/route1?id=xxxx&name=yyyy&orderBy=zzzz格式。谢谢你的回答
Route::pattern('id', '[0-9]+');
Route::pattern('name', '[a-Z]+');
Route::get('route1/{id}/{name?}/{orderby?}', 'Controller1@controllerAction1');
Route::get('route1/{name}/{orderby?}', 'Controller1@controllerAction1');