いくつかの追加情報を使用して、プロダクション小枝パーシャルを表示するパターン ライブラリを構築しています。各パターンの下に、パターンから生成したい 2 つのコード スニペットを配置します。1 つは解析された HTML で、もう 1 つは変数やその他の Twig コードを含む、部分ファイルから直接取得した私の Twig コードです。
質問
ページで既に解析およびレンダリングされたが、解析されていない形式のブロックを再利用するにはどうすればよいですか?
ファイル:
moduleXYZ.html
(生産モジュール コード)、拡張…</li>_pattern.html
(パターン ライブラリ用の追加の情報コードを含むラッパー)、これは…を使用します</li>_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 %}
うまくいかなかったこと
「パターン」ブロックを でラップすることで、必要な結果を得ることができましたmoduleXYZ.html
が{% verbatim %}
、もちろん、モジュール自体でもロジック/変数が解析されません。
変数をblock()
関数に渡すことができないことを理解しているため、再利用されたブロックに対して条件付きで逐語的に切り替えることもできません (またはできますか?)。