1

我对 symfony2(2.0.16) 路由有问题。

我尝试运行 2 条路线,例如

route1:
  host/my/route/{param}
    requirements: 
      param: ".*[^/]$"
route2:
  host/my/route/category/{param}
    requirements: 
      param: ".*[^/]$"

可以想象,无论如何都不会调用第二条路线。

我真正想做的是搜索和专门搜索,因此我还需要允许点、加号和斜杠..

我尝试对斜杠进行编码(urlencode 为 %2F 或 %252F),以便我可以更改要求,但 symfony 总是在路由之前对其进行解码,所以如果我删除要求,我会收到路由错误。

我考虑过使用base64编码,但这不能解决我的问题..

编辑:我也不能依赖路线的顺序,因为我从许多不同的包中导入路线..

4

2 回答 2

1
#This one before the other to be considered !
route2:
  host/my/route/category/{param}
    requirements: 
      param: ".+"

route1:
  host/my/route/{param}
    requirements: 
      param: ".+"
于 2012-09-25T14:15:01.247 回答
0

您的第一条路线的参数不能是category否则它将匹配它而不是忽略它。您可以更改正则表达式以忽略此值:

route1:
  host/my/route/{param}
    requirements: 
      param: "(?!category/).*[^/]$"
route2:
  host/my/route/category/{param}
    requirements: 
      param: ".*[^/]$"

现在,一个category后跟斜线的参数将被忽略,并且模式将不匹配,除了第二条路线。

于 2018-03-28T21:50:22.233 回答