【问题标题】:How to display string that contains HTML in twig template?如何在树枝模板中显示包含 HTML 的字符串?
【发布时间】:2012-01-11 09:52:15
【问题描述】:

如何在 twig 模板中显示包含 HTML 标签的字符串?

我的 PHP 变量包含这个 html 和文本:

$word = '<b> a word </b>';

当我在我的树枝模板中执行此操作时:

{{ word }}

我明白了:

&lt;b&gt; a word &lt;b&gt;

我想要这个:

<b> a word </b>

这样容易吗?

【问题讨论】:

  • 我不会将此作为答案添加,但解决此问题的人们的另一种方法是将值存储在 Markdown 中,例如 StackOverflow does。然后您可以使用automatic escaping 创建一个 Twig 过滤器,因为您可以相信 HTML 是安全的。不需要raw,并且您存储的值是人类可读的!

标签: php html symfony twig


【解决方案1】:

使用原始关键字,http://twig.sensiolabs.org/doc/api.html#escaper-extension

{{ word | raw }}

【讨论】:

  • 进行替换时,它对我不起作用。 {{字|替换({(word_to_replace):''~(word_to_replace)~''})|原始 }} 有什么想法吗?
  • 更新:我通过使用'set'将它添加到另一个变量来解决它,然后{{ word | raw }} 工作正常。
【解决方案2】:

您还可以使用:

{{ word|striptags('<b>')|raw }}

因此只允许使用&lt;b&gt; 标签。

【讨论】:

  • 如果您只想允许几个标签,我会说这个版本更可取。
  • 让我感到困惑的是需要把“原始”放在最后——我会把它放在第一位。
  • 如何允许多个标签?
【解决方案3】:
{{ word|striptags('<b>,<a>,<pre>')|raw }}

如果你想允许多个标签

【讨论】:

    【解决方案4】:

    如果您不需要变量,您可以在
    translations/messages.en.yaml中定义文本:
    CiteExampleHtmlCode: "&lt;b&gt; my static text &lt;/b&gt;"

    然后将其与 twig 一起使用:
    templates/about/index.html.twig
    … {{ 'CiteExampleHtmlCode' }}
    或者如果您需要像我这样的多语言:
    … {{ 'CiteExampleHtmlCode' | trans }}

    让我们看看https://symfony.com/doc/current/translation.html 了解更多关于翻译使用的信息。

    【讨论】:

      猜你喜欢
      • 2015-03-21
      • 2017-07-22
      • 2013-08-07
      • 2016-01-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-04-22
      相关资源
      最近更新 更多