Laravel 4路由中命名参数的语法是什么?

时间:2013-06-27 20:28:16

标签: php laravel laravel-4

我想在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}

因此新路线的参数顺序不同。我想将这两条路线指向同一个功能。

1 个答案:

答案 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以便路由到控制器。