2

Twig をテンプレート エンジンとして使用して、Symfony2 で簡単なページを開発しています。

URL のリストがあり、各 URL に Twitter 共有ボタンを追加したいと考えています。私がしているのは、urls 配列の単純なサイクルであり、サイクル内のすべての Twitter ボタンの URL を dinaycally に設定します。最初に twig が URL をエンコードし、Twitter スクリプトが再度エンコードするようです。そのため、Twitter のシェア数は一致しません。コード (サイクル内) は次のとおりです。ページの最後に Twitter コードの別の部分があります。

<a href="https://twitter.com/share" class="twitter-share-button" data-url="{{ s.url }}">Tweet</a>

レンダリングされたページで取得した URL は、 (1 つのエンコーディング パス、正しい)http%253A%252F%252Fwww.example.com%252Fではなく (2 つのエンコーディング パス) です。が に再度エンコードされてhttp%3A%2F%2Fwww.example.com%2Fいるようです。%%25

これでは、Twitter のカウントは機能しません。なぜなら、この 2 つが異なる URL と見なされるからです。

また、いくつかのフィルターを使用しようとしまし{{ s.url|raw }}たが、うまくいきませんでした。

私の質問は次のとおりです。これを回避するにはどうすればよいですか?twig (または twitter) に URL をエンコードしないように指示する方法はありますか?

4

2 に答える 2

3

{% autoescape false %}Twigでは、生のままにしておきたいコードの前に宣言を使用することで、いつでも自動エスケープをオフにすることができます。これにより、出力する文字列はエスケープされないままになるため、URLが2回エスケープされることはありません。自動エスケープをオンに戻すようにしてください{% endautoescape %}

{% autoescape false %}
    <a href="https://twitter.com/share" class="twitter-share-button" data-url="{{ s.url }}">Tweet</a>
{% endautoescape %}

完全なTwigHTMLエスケープドキュメント

于 2012-05-07T04:24:39.393 に答える