Twig:多次渲染块:解析,转义,逐字

时间:2016-06-07 15:46:28

标签: twig block verbatim

我正在构建一个模式库,显示我的生产枝条部分和一些附加信息。在每个模式下,我希望有两个代码片段,我想从我的模式生成。一个是解析的HTML,另一个是我的Twig代码,直接来自部分文件,包括变量和其他Twig代码。

问题

如何重复使用我已在页面上解析和呈现的块,但是以未解析的形式?

文件:

  • moduleXYZ.html(生产模块代码),扩展......
  • _pattern.html(带有模式库附加信息代码的包装器),它使用...
  • _pattern_foot.html(此处,_pattern.html中定义并在moduleXYZ.html中覆盖的块应逐字显示)

moduleXYZ.html:

{% extends '_pattern.html' %}
{% block pattern %}
  <h2>{{ variable|default('Some placeholder text') }}</h2>
{% endblock %}

_pattern.html:

{% block pattern %}
  No pattern defined.
{% endblock %}
{% use '_pattern-foot.html' %}
{% block('patternfoot') %}

_pattern-foot.html:

{% block patternfoot %}
  <h2>HTML for this pattern:</h2>
  <pre><code>
  {{ block('pattern')|e }} {# THIS WORKS, escaped HTML is displayed. #}
  </code></pre>

  <h2>Twig for this pattern:</h2>
  <pre><code>
  {{ block('pattern')|e }} {# THIS IS NOT WORKING, of course, because the block is already parsed. #}
  </code></pre>

{% endblock %}

什么不起作用

我设法通过包装&#34;模式&#34;得到了我想要的结果。 moduleXYZ.html中的{% verbatim %}中阻止,但当然我的逻辑/变量也会在模块本身中解析。

我知道将变量传递到block()函数是不可能的,所以我也不能有条理地为我重复使用的块切换(或者我可以吗?)。

0 个答案:

没有答案