TWIG で遅延バインディングの種類を実装する (またはサポートされている場合は使用する) 方法。
同じインスタンスを介していくつかのレンダリング間で変数を転送する方法
詳細な説明を含む状況は次のとおりです。
グローバル レイアウト テンプレートがあり、テンプレートの途中で呼び出される種類のウィジェットがあるとします (おそらく何度も - ユーザーのリストでアバター描画ウィジェットとしましょう)。
これらのウィジェットの機能には、レイアウトにいくつかの JavaScript コードを実装する必要があるとしましょう。
<header>
<script type="text/javascript" src="widget_avatar.js">
</header>
だから、小枝テンプレート言語では、次のように実装したいと思います。
レイアウト.小枝
<header>
{% for script_name in scripts %}
<script type="text/javascript" src="{{ script_name }}"></script>
{% endfor %}
</header>
<body>
{{ Widget('Draw_Avatar') }}
variable below set in the widget coz both widget and layout
uses the same TWIG instance:
{{ after_execution }}
</body>
draw_avatar.twig
Im widget template returning some rendered html
for my functionality i need some javascript inserted
into the "layout.twig" header
adding required javascript to the array of javascripts
{% set scripts = scripts | merge({'widget_avatar':'widget_avatar.js'}) %}
{% set after_execution = 'HELLO' %}
そのため、多くのウィジェットを呼び出すことができます。そのうちのいくつかは、レイアウト ヘッダーに挿入する必要がある JavaScript の配列に必要な JavaScript を追加する場合があります。
小枝の継承はここでは機能しません。coz ウィジェットは独立していて、さまざまなテンプレートで簡単に再利用できるはずです。
しかし、すべてのテンプレートとウィジェットとレイアウトは同じ twig インスタンスを使用します。
レイト バインディングのようなレイアウト ヘッダーで使用する配列スクリプトが必要です。
したがって、テンプレートレンダリングプロセスの最後にコードブロックをレンダリングする必要があります。これについてTWIGを「言う」にはどうすればよいですか?
ウィジェットがレンダリングされた後、ウィジェットからレイアウト テンプレートに変数を転送する方法を教えてください。