首先感谢阅读。我遇到了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
欢迎任何帮助。再次感谢。
答案 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