我正在构建一个模式库,该库显示我的生产树枝部分以及一些附加信息。在每种模式下,我都希望从我的模式中生成两个代码片段。一种是解析后的 HTML,另一种是我的 Twig 代码,直接来自部分文件,包括变量和其他 Twig 代码。
问题
如何重用已经在页面上解析和呈现的块,但以未解析的形式?
文件:
moduleXYZ.html
(生产模块代码),它扩展了……</li>_pattern.html
(带有用于模式库的附加信息代码的包装器),它使用...</li>_pattern_foot.html
(在这里,定义_pattern.html
和覆盖的块moduleXYZ.html
应该逐字显示)
模块XYZ.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 %}
什么没用
我设法通过将“模式”块包装在中来获得我想要的结果moduleXYZ.html
,{% verbatim %}
但是当然我的逻辑/变量在模块本身中也没有被解析。
我知道不可能将变量传递给block()
函数,所以我也不能有条件地为我重用的块逐字切换(或者我可以吗?)。