Symfony2在链接中出现%字符问题

时间:2014-06-22 11:42:56

标签: php symfony routing

我对symfony2(2.4)有一个奇怪的问题,网址中包含%字符。

网址是: /测试/检查/ dq9L1oAOh2dDRLn3wmFW6wyHRfgCjRF%2FCelmCWOPIYeuLdO3dLuJ8In3LhFYZHzhCwwcqGWQFj1aPSAJUXaZ8e /

路由是:

test_check:

    pattern:  /test/check/{id}/

    defaults: { _controller: TestSiteBundle:Test:Check}

如果我从网址中删除%字符,如果我将其留在其中,则返回404

我还补充说:

requirements:

    id: .+

并且如果页面也包含GET参数,并且如果网址是:

,那么它可以使用param。

/测试/检查/ dq9L1oAOh2dDRLn3wmFW6wyHRfgCjRF%2FCelmCWOPIYeuLdO3dLuJ8In3LhFYZHzhCwwcqGWQFj1aPSAJUXaZ8e / VAL =真安培;检测=是

那么id的值将是dq9L1oAOh2dDRLn3wmFW6wyHRfgCjRF%2FCelmCWOPIYeuLdO3dLuJ8In3LhFYZHzhCwwcqGWQFj1aPSAJUXaZ8e /?val = true& test = yes

最佳实践的任何想法?

我知道我可以将param留在路由中并在/中爆炸字符串并在数组中包含良好的字符串,因为字符串是urlencoded它不会生成第二个/但是我想应用更漂亮解决方案,如果有的话。

谢谢

1 个答案:

答案 0 :(得分:0)

路由定义中的要求接受正则表达式。所以我的建议是在路由定义中构建regexp过滤器(比。+更复杂)

如果您希望最多有一个%2F(/字符),那么您就可以写下这样的匹配:

requirements:
    id: \w\/?\w*