Twig:如何在块标题中显示html内容

时间:2013-10-30 09:55:29

标签: php html symfony twig

在我的symfony2项目中,我有一些twig temlates。 在其中一个中,我有块标题。

{% block title %}{{ announcement.title }}{% endblock %}

问题是变量{{ announcement.title }}可以是:<em>test</em>

在这种情况下,我的标题将是<em>test</em>,并且需要

  

测试

我试过了{% block title %}{{ announcement.title|raw }}{% endblock %}但没有改变。这只是在块标题中,如果我将原始过滤器放在我的块内容中,那就没问题了。

关于如何做到这一点的任何想法?

编辑:

以下是一个例子:

{% block title %}{{ announcement.title|raw }}{% endblock %}
{% block body_announcements %}{{ announcement.title|raw }}{% endblock %}

在块标题中,我看到<em>test<em>,在块body_announcements中,我看到 test 是正确的。

3 个答案:

答案 0 :(得分:4)

您必须使用raw filter按原样显示文本和标签

{% block title %}{{ announcement.title|raw }}{% endblock %}

编辑:striptags filter用于显示没有标记的文字:

{% block title %}{{ announcement.title|striptags }}{% endblock %}

实施例

Twig代码

{% set str = '<em>test</em>' %}
1: {{ str }}
2: {{ str|raw }}
3: {{ str|striptags }}

结果

  

1:&lt; em&gt; test&lt; / em&gt;

<em></em>代码已转义。

  

2: test

浏览器显示并解释<em></em>标记。

  

3:测试

删除<em></em>标记,仅显示文字。

答案 1 :(得分:0)

您可以执行此操作以转义HTML

{% block title %}{{ announcement.title|e('html') }}{% endblock %}

答案 2 :(得分:0)

试试以下......

{% block title %}{{ announcement.title|raw }}{% endblock %}