我想在Laravel 4中为我的所有路线使用命名参数,而不是依赖于路线定义中的位置。我在手册中找不到任何描述如何执行此操作的内容。
我看到这个github问题表明Laravel 4中存在此功能:https://github.com/laravel/laravel/pull/832#issuecomment-8217765
我尝试使用冒号前缀设置路由,例如
Route::get('{:foo}/{:bar}', function($bar, $foo) {})
我也尝试使用看似旧的语法,使用(:foo)/(:bar)
而不是花括号,但这也不起作用。参数始终按路径中定义的顺序进行。
示例:
我正在使用的应用程序支持一些我需要维护的路由。但它们并没有以适当的宁静风格设计。
/ autoaccount / user / 2/3指ID = 3的用户id = 2的自动帐户
新设计是:
/用户/ {用户ID} / autoaccounts / {autoaccountid}
因此新路线的参数顺序不同。我想将这两条路线指向同一个功能。
答案 0 :(得分:0)
Laravel 4支持这一点,正如你所说。
您需要使用大括号中的变量,但没有冒号:
文档路由是here。
相关示例:
Route::get('user/{id}/{name}', function($id, $name)
{
//
})
->where(array('id' => '[0-9]+', 'name' => '[a-z]+'))
请注意,where()
部分是可选的。
查看上面链接的文档以获取可用选项。请注意,您可以在传递给Route::method()
调用的数组中定义控制器方法和其他选项。
最后,另请参阅controller docs以便路由到控制器。