2013-01-09 68 views
0

我有这样的路线:进行urlencode在树枝路径功能

_view_tag: 
    pattern: /topic/{tid} 
    defaults: {_controller: "MyCoreBundle:ViewTag:index" } 

而且我想显示的网址是这样的:example.com/topic/Web+development。我用href="topic/{{ topicname|url_encode() }}"。这是作品,但当然它不是正确的方式,所以我改为href="{{ path('_view_tag', {'tid': topicname|url_encode() }) }}"。但它不显示example.com/topic/Web+development,它显示example.com/topic/Web%2Bdevelopment

我也试试这个:

{% set _tid = topicname|url_encode() %} 
<a href="{{ path('_view_tag', {'tid': _tid }) }}" ... 

但仍然没有工作

我的问题是,如何使其使用树枝路径功能显示example.com/topic/Web+development

回答

1

path函数负责为您编写网址编码。你的问题是你的空间被编码了两次:第一个到+,然后被转换为%2b。这将工作:

path('_view_tag', { 'tid': topicname }) 
+0

我改变,它现在返回'/ topic/Web%20technology'(我看看视图源)而不是'/ topic/Web + technology'。 %20显示为浏览器网址中的空间(我使用chrome)。它实际上是可以的,但是如果使用+而不是空间,看起来会更舒服 – Permana

+0

两者是相同的,在服务器上它们都是空间。如果你真的想坚持'+',你可以在你的url上使用树枝的'replace'过滤器,但是我认为这不值得冒险。 – Maerlyn

+1

啊是的,更换过滤器。最终代码看起来像这样:''{path('_ view_tag',{'tid':topicname})| replace({'%20':'+'})}}谢谢Maerlyn的帮助 – Permana