我遇到了问题。
这是我目前的路线:
edit_declaration:
pattern: /X/Y/{idDeclaration}/{token}/{modification}
defaults: { _controller: SgaDemandeBundle:Demande:editDone}
requirements:
token: .+
然后:
http://website/X/Y/myIdDeclaration/A4Z5TvCgPoBW+iP6BO0NsVW2ya0J9ME/gIeiJ+q0lGw=/OK
我的令牌可以有'/'
。
我的令牌是:A4Z5TvCgPoBW+iP6BO0NsVW2ya0J9ME/gIeiJ+q0lGw=
但我的令牌在'/'
后被切断了:
A4Z5TvCgPoBW+iP6BO0NsVW2ya0J9ME/
而不是
A4Z5TvCgPoBW+iP6BO0NsVW2ya0J9ME/gIeiJ+q0lGw=
我按照这个例子:http://symfony.com/doc/current/cookbook/routing/slash_in_parameter.html
看起来这是在不使用其他背后的工作。
请帮助
答案 0 :(得分:3)
你误解了doc中的例子。该示例允许您通过斜杠分隔2个不同的参数。
您必须使用urlencode将斜杠和其他字符编码为安全解释。
默认参数是在Symfony2中编码的url,你如何生成路由?
编辑:
在评论中,您说您正在使用<a href='{{path}}/{{declaration.idDeclaration}}/{{ token|url_encode() }}'>
请使用symfony的路由生成系统:
<a href='{{ path('nameOfThePath', {'id': declaration.idDeclaration, 'token': token }}'>
这样,如果有一天您想要更改路线,则无需传递所有页面......
答案 1 :(得分:1)
生成令牌时使用urlencode。因此/
变为%2F