我正在构建一个模式库,显示我的生产枝条部分和一些附加信息。在每个模式下,我希望有两个代码片段,我想从我的模式生成。一个是解析的HTML,另一个是我的Twig代码,直接来自部分文件,包括变量和其他Twig代码。
问题
如何重复使用我已在页面上解析和呈现的块,但是以未解析的形式?
文件:
moduleXYZ.html(生产模块代码),扩展......
_pattern.html(带有模式库附加信息代码的包装器),它使用...
_pattern_foot.html(此处,_pattern.html中定义并在moduleXYZ.html中覆盖的块应逐字显示)
moduleXYZ.html:
{% extends '_pattern.html' %}
{% block pattern %}
{{ variable|default('Some placeholder text') }}
{% endblock %}
_pattern.html:
{% block pattern %}
No pattern defined.
{% endblock %}
{% use '_pattern-foot.html' %}
{% block('patternfoot') %}
_pattern-foot.html:
{% block patternfoot %}
HTML for this pattern:
{{ block('pattern')|e }} {# THIS WORKS, escaped HTML is displayed. #}
Twig for this pattern:
{{ block('pattern')|e }} {# THIS IS NOT WORKING, of course, because the block is already parsed. #}
{% endblock %}
什么不起作用
我设法通过包装"模式"得到了我想要的结果。 moduleXYZ.html中的{% verbatim %}中阻止,但当然我的逻辑/变量也会在模块本身中解析。
我知道将变量传递到block()函数是不可能的,所以我也不能有条理地为我重复使用的块切换(或者我可以吗?)。