4

我正在从 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
4

1 回答 1

4

如果你看一下UrlGenerator代码,你可以看到,hashtag 在rawurlencode. 在提交6039569中添加了主题标签的转义。

作为一种解决方法,您可以扩展UrlGenerator类并用$decodedChars包含的标签替换数组。然后告诉 Symfony 使用你的生成器类:

parameters:
    router.options.generator_base_class: Acme\MyBundle\Routing\HashtagDecodedUrlGenerator
于 2013-09-04T12:54:35.153 回答