Symfony路线有几个可选参数

时间:2016-06-30 11:02:49

标签: php symfony routes optional-parameters

首先感谢阅读。我遇到了Symfony路线的问题。我有一条接收几个参数的路线:

my_route:
    path:     /route/{page}/{paramA}/{paramB}/{paramC}
    defaults: { _controller: MyBundle:MyController:index, page: null, paramA: null, paramB: null, paramC: null }

问题在于“paramA”。它是一个过滤结果的文本,可能没有设置,但“paramB”和“paramC”可能是。

所以我需要处理该路由,例如:

/route/1/paramB/paramC

并在控制器中接收:

paramA = null, paramB="paramB", paramC="paramC"

现在我处理时:

/route/1/paramB/paramC

我在控制器中得到了这个:

paramA="paramB", paramB="paramC", paramC=null

欢迎任何帮助。再次感谢。

2 个答案:

答案 0 :(得分:4)

这些用于过滤,排序和分页的可选参数应作为查询参数传递,路由参数只应指向所需的资源。

所以:

/article?page=0&limit=10

/article/0/10

或者:

/user?active=1

/user/1

等等。

如果您有一个复杂的例子,请与我们分享。

答案 1 :(得分:2)

这不可能。如Symfony文档中所述

  

您可以拥有多个可选的占位符,但之后的所有内容   可选的占位符必须是可选的。

您已将以下内容添加到默认密钥

page: null, paramA: null, paramB: null, paramC: null

因此,关键page之后的所有内容都应该存在于网址中,同样适用于paramA。因此,当您想要跳过一个值时,必须跳过以下值。

参考:http://symfony.com/doc/current/book/routing.html#adding-requirements