【问题标题】:What is the syntax for named parameters in Laravel 4 routes?Laravel 4 路由中命名参数的语法是什么?
【发布时间】: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 你要做什么......然后你可以有任何数量的参数!

标签: php laravel laravel-4


【解决方案1】:

如你所说,Laravel 4 支持这一点。

您需要花括号中的变量,但没有冒号:

正在路由的文档是here

相关示例:

Route::get('user/{id}/{name}', function($id, $name)
{
    //
})
->where(array('id' => '[0-9]+', 'name' => '[a-z]+'))

请注意,where() 部分是可选的。

查看上面链接的文档以获取可用选项。请注意,您可以在传递给Route::method() 调用的数组中定义控制器方法和其他选项。

最后,请参阅controller docs 以了解如何路由到控制器。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-08-10
    • 1970-01-01
    • 2013-11-24
    • 1970-01-01
    • 2021-05-11
    • 1970-01-01
    相关资源
    最近更新 更多