【发布时间】:2013-06-25 12:15:51
【问题描述】:
我想在 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的auto账号
对此的新设计是:
/users/{userid}/autoaccounts/{autoaccountid}
因此,新路由的参数顺序不同。我想将这两条路线都指向同一个函数。
【问题讨论】:
-
你能举一个路线的例子以及你想要做什么吗?
-
我有几条遗留路由需要维护,这些路由不是使用一致的 RESTful 风格设计的。我希望能够为旧 URL 创建路由并将它们指向与我拥有的一些新路由相同的功能。
-
我现在在我的问题中提供了一个例子。
-
对于旧路由,我建议通过
.htaccess将它们重写为新路由(在您的重写中使用$1、$2等)。虽然users可能是你的控制器,{userid}不是一个有效的操作——你必须知道action你要做什么......然后你可以有任何数量的参数!