我对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它不会生成第二个/但是我想应用更漂亮解决方案,如果有的话。
谢谢
答案 0 :(得分:0)
路由定义中的要求接受正则表达式。所以我的建议是在路由定义中构建regexp过滤器(比。+更复杂)
如果您希望最多有一个%2F(/字符),那么您就可以写下这样的匹配:
requirements:
id: \w\/?\w*