Symfony 2.1+;对哈希/磅进行编码#&引用;沿途

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> 在升级之前,这工作正常。升级后,#编码

我正在从Symfony 2.0升级到2.3。因为我们有一个单页应用程序,所以我们定义了带有散列的路由

通过注释配置的路由:

/**
 * @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类