Symfony2路由可选参数

时间:2014-05-12 18:01:06

标签: symfony routing routes

我正在尝试路由到某个类别。

我目前有:

foo:
    path:  /foo/{page}.{_format}
    defaults: { _controller: Bundle:Main:foo, page: "" }

当我尝试访问mydomain.com/foo/时收到错误消息,说找不到路由。

我该如何解决这个问题?

感谢。

2 个答案:

答案 0 :(得分:2)

错误的发生是因为您的路线中有一个点,并且路由期望在路线中找到一个点,但您尝试访问没有点的mydomain.com/foo/。如果您想访问mydomain.com/foo/,您可以定义另一条路线,如下所示:

foo:
    path:  /foo
    defaults: { _controller: Bundle:Main:foo, page: "" }

通过这种方式,您的路由不会期望路由中的点,并且您指定了页面变量的默认值。

我一直在测试你的例子,我已经看到你可以避免在前面的例子中简单地定义_format变量,如下所示:

foo:
    path:  /foo/{page}.{_format}
    defaults: { _controller: Bundle:Main:foo, page: "", _format: html }

如果您尝试访问mydomain.com/foo/,Symfony会抛出异常,但如果您在没有最后一个条的情况下访问mydomain.com/foo,则会正确管理该路由。

答案 1 :(得分:1)

您需要为路线参数提供默认值。您可以在官方文档中阅读相关内容 - http://symfony.com/doc/current/book/routing.html#adding-requirements

相关问题