具有多个可选参数的 Symfony 路由
Symfony route with several optional params
首先感谢阅读。我遇到了 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
欢迎任何帮助。再次感谢。
这是不可能的。如 Symfony 文档中所述
You can have more than one optional placeholder,
but everything after
an optional placeholder must be optional.
您已将以下内容添加到默认键,
page: null, paramA: null, paramB: null, paramC: null
所以键 page
之后的所有内容都应该在 URL 中,paramA
也是如此。所以当你想跳过一个值时,你必须在你的情况下跳过以下值。
参考:http://symfony.com/doc/current/book/routing.html#adding-requirements
诸如此类用于过滤、排序和分页的可选参数应作为查询参数传递,路由参数应仅指向所需资源。
所以:
/article?page=0&limit=10
不是:
/article/0/10
或者:
/user?active=1
不是:
/user/1
以此类推
如果您有复杂的示例,请与我们分享。
首先感谢阅读。我遇到了 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
欢迎任何帮助。再次感谢。
这是不可能的。如 Symfony 文档中所述
You can have more than one optional placeholder,
but everything after an optional placeholder must be optional.
您已将以下内容添加到默认键,
page: null, paramA: null, paramB: null, paramC: null
所以键 page
之后的所有内容都应该在 URL 中,paramA
也是如此。所以当你想跳过一个值时,你必须在你的情况下跳过以下值。
参考:http://symfony.com/doc/current/book/routing.html#adding-requirements
诸如此类用于过滤、排序和分页的可选参数应作为查询参数传递,路由参数应仅指向所需资源。
所以:
/article?page=0&limit=10
不是:
/article/0/10
或者:
/user?active=1
不是:
/user/1
以此类推
如果您有复杂的示例,请与我们分享。