Symfony 2.1+;对哈希/磅进行编码#&引用;沿途
我正在从Symfony 2.0升级到2.3。因为我们有一个单页应用程序,所以我们定义了带有散列的路由 通过注释配置的路由:Symfony 2.1+;对哈希/磅进行编码#&引用;沿途,symfony,twig,Symfony,Twig,我正在从Symfony 2.0升级到2.3。因为我们有一个单页应用程序,所以我们定义了带有散列的路由 通过注释配置的路由: /** * @Route("/app#orders/{id}", name="app_order") */ 我们使用Twig生成电子邮件,并在Twig模板中使用这些路由: <a href="{{ url('app_order', { 'id': '123' }) }}">View order</a> 在升级之前,这工作正常。升级后,#编码
/**
* @Route("/app#orders/{id}", name="app_order")
*/
我们使用Twig生成电子邮件,并在Twig模板中使用这些路由:
<a href="{{ url('app_order', { 'id': '123' }) }}">View order</a>
在升级之前,这工作正常。升级后,#
编码为%23
,但斜杠保持不变。这当然会在电子邮件中生成无效的URL
为什么只有哈希编码而没有斜杠?要么全是,要么什么都不是。除了替换字符串,我还有什么选择
我已经尝试过但没有帮助的事情:
- 将自动转义设置为false
{%autoescape false%}
- 使用原始
{{url(…)|raw}
- 结合使用raw和autoescape=false
rawurlencode
之后不会被解码。
哈希标记的转义已添加到提交中
作为一种解决方法,您可以扩展UrlGenerator
类,并用包含的hashtag替换$decodedChars
数组。然后告诉Symfony使用生成器类:
parameters:
router.options.generator_base_class: Acme\MyBundle\Routing\HashtagDecodedUrlGenerator
好发现。所以听起来这不是一个细枝问题,而是一个符号问题。我很困惑,你用的是哪个版本。因为这个提交已经在symfony(v2.0.0)的第一个版本中了。我们在2.0.21上,哈希肯定没有在那里编码。好的。比较仅对url的一部分(我认为标记表示url中的{fields})进行编码的文件和对整个url进行编码的文件。变化在提交中。也许发布的解决方案有帮助?对您的解决方案进行了细微的修改。实际上,需要重写的是
generator\u base\u类
。