Symfony中的可选URL参数

时间:2014-06-19 03:55:47

标签: symfony url router

我目前有这个页面:

my_homepage:
    pattern:  /items/{page}
    defaults: { _controller: MyBundle:Default:index, page: 1 }
    requirements:
      page: \d+

所以目前我可以转到http://example.com/items/,它会显示第1页。我可以转到http://example.com/items/1,它也会显示第1页,http://example.com/items/2会显示第2页,等等。

我想保留这种风格的网址。

但我也希望在那里有一个可选参数,以便我可以去:

或者

很明显"危险"和"未分类"取代了新的可选参数(让我们称之为 {type} )。

基本上,原始示例会显示所有内容,而最后2个(使用"危险""未分类")会过滤列表并仅显示某些项目。

所以我的问题是,我在路由器和控制器中做了什么才能在" items"之间设置可选参数。和#34;页码" (如果指定了页码)?

感谢任何想法,谢谢。

1 个答案:

答案 0 :(得分:1)

对于两个可选参数,您可以创建路线的别名:

my_homepage:
    pattern:  /items/{page}
    defaults: { _controller: MyBundle:Default:index, page: 1 }
    requirements:
        page: \d+

my_homepage_with category:
    pattern:  /items/{category}/{page}
    defaults: { _controller: MyBundle:Default:index, page: 1}
    requirements:
        page: \d+
        category: \w+

您的indexAction控制器需要一个可选的类别参数

public function indexAction($page, $category = null)
{
    //...