Php Twig:url在传递给Twitter共享按钮时编码了两次
我正在用Symfony2开发一个简单的页面,使用Twig作为模板引擎 我有一个url列表,我想为每个url添加Twitter共享按钮。我所做的是在url数组上进行一个简单的循环,然后为循环中的每个Twitter按钮设置url。看起来这根细枝首先对url进行了编码,而Twitter脚本又对其进行了编码。所以推特分享数量不匹配。代码(在循环中)如下所示,页面末尾还有另一部分Twitter代码:Php Twig:url在传递给Twitter共享按钮时编码了两次,php,twitter,symfony,twig,Php,Twitter,Symfony,Twig,我正在用Symfony2开发一个简单的页面,使用Twig作为模板引擎 我有一个url列表,我想为每个url添加Twitter共享按钮。我所做的是在url数组上进行一个简单的循环,然后为循环中的每个Twitter按钮设置url。看起来这根细枝首先对url进行了编码,而Twitter脚本又对其进行了编码。所以推特分享数量不匹配。代码(在循环中)如下所示,页面末尾还有另一部分Twitter代码: <a href="https://twitter.com/share" class="twitter
<a href="https://twitter.com/share" class="twitter-share-button" data-url="{{ s.url }}">Tweet</a>
我在呈现页面上得到的url是:http%253A%252F%252Fwww.example.com%252F
(两个编码过程)
而不是http%3A%2F%2Fwww.example.com%2F
(一次编码,正确)。看起来%
再次编码为%25
<>这并不能使推特计数工作,因为它把这两个视为不同的URL。< /P>
我还尝试使用一些过滤器,例如,{{s.url | raw}}
,但它不起作用
所以我的问题是:如何避免这种情况?有没有办法告诉twig(或twitter)不要对url进行编码?您可以在twig中使用
{%autoescape false%}
声明来关闭自动转义,然后再将代码保留为原始状态。这将使您输出的任何字符串都没有转义,因此您的URL不会转义两次。确保使用{%endautoescape%}
{% autoescape false %}
<a href="https://twitter.com/share" class="twitter-share-button" data-url="{{ s.url }}">Tweet</a>
{% endautoescape %}
{%autoescape false%}
{%endautoescape%}
在要保留原始代码之前,始终可以使用
{%autoescape false%}
声明关闭Twig中的自动转义。这将使您输出的任何字符串都没有转义,因此您的URL不会转义两次。确保使用{%endautoescape%}
{% autoescape false %}
<a href="https://twitter.com/share" class="twitter-share-button" data-url="{{ s.url }}">Tweet</a>
{% endautoescape %}
{%autoescape false%}
{%endautoescape%}
一篇旧文章,但看起来您现在可以使用“原始”过滤器了。这应该做到:
{{ s.url|raw }}
一篇旧文章,但看起来您现在可以使用“原始”过滤器了。这应该做到:
{{ s.url|raw }}
细枝处理前s.url的值是多少?(来自控制器的var_dump)来自控制器的var_dump,它是http%3A%2F%2Fwww.example.com%2F我不知道Twitter API,但您可能在页面中包含来自Twitter的JS文件。也许这个脚本会解析源代码并在每个a.twitter-share-button上应用urlencode。。。您是否尝试过在没有第一次传递的情况下将原始URL从控制器传递到细枝?细枝处理前s.URL的值是多少?(来自控制器的var_dump)来自控制器的var_dump,它是http%3A%2F%2Fwww.example.com%2F我不知道Twitter API,但您可能在页面中包含来自Twitter的JS文件。也许这个脚本会解析源代码并在每个a.twitter-share-button上应用urlencode。。。您是否尝试过在没有第一次传递的情况下将原始URL从控制器传递到细枝?