Twig 小树枝路径函数中的urlencode

Twig 小树枝路径函数中的urlencode,twig,symfony-2.0,Twig,Symfony 2.0,我有这条路线: _view_tag: pattern: /topic/{tid} defaults: {_controller: "MyCoreBundle:ViewTag:index" } 我想这样显示url:example.com/topic/Web+development。我使用href=“topic/{{topicname | url_encode()}”。这是可行的,但当然不是正确的方法,所以我改为href=“{{path(''u view_tag',{'tid':

我有这条路线:

_view_tag:
    pattern:  /topic/{tid}
    defaults: {_controller: "MyCoreBundle:ViewTag:index" }
我想这样显示url:
example.com/topic/Web+development
。我使用
href=“topic/{{topicname | url_encode()}”
。这是可行的,但当然不是正确的方法,所以我改为
href=“{{path(''u view_tag',{'tid':topicname | url_encode()}}}}”
。但它没有显示
example.com/topic/Web+开发
,而是显示
example.com/topic/Web%2Bdevelopment

我也尝试这样做:

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

path
函数为您处理url编码。您的问题是您的空间被编码了两次:首先是一个
+
,然后被转换成
%2b
。这将有助于:

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

我改为,它现在返回
/topic/Web%20technology
(我查看查看源代码)而不是
/topic/Web+technology
%20在浏览器url中显示为空格(我使用chrome)。这实际上是可以的,但是如果使用+比使用空格看起来更舒服。两者相等,在服务器上它们都意味着一个空格。如果你真的想坚持使用
+
,你可以在你的URL上使用twig的
replace
过滤器,但我认为这不值得这么麻烦。啊,是的,更换过滤器。最后的代码如下所示
href=“{path(''u view_tag',{'tid':topicname})}替换({'%20':'+'})}}”
。谢谢Maerlyn的帮助