我正在从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。
为什么只有哈希编码而不是斜杠?应该是全有或全无。除了进行字符串替换之外,我还有哪些选项?
我已经尝试过的事情没有帮助:
{% autoescape false %}
{{ url(...)|raw }}
答案 0 :(得分:4)
如果您查看UrlGenerator
代码,可以看到,rawurlencode
后代码未被解码。
在提交6039569中添加了主题标签的转义。
作为一种解决方法,您可以扩展UrlGenerator
类并使用包含的主题标签替换$decodedChars
数组。然后告诉Symfony使用你的生成器类:
parameters:
router.options.generator_base_class: Acme\MyBundle\Routing\HashtagDecodedUrlGenerator