現在のプロジェクトで実装する必要があるものを考えています。以下に例を挙げて説明します。
多くのテンプレートで使用される以下の変数構造を使用します。
{% if article.tags is iterable %}
{% for tag in article.tags %}
{{ tag.title }}
{% endfor %}
{% endif %}
上記の #1 行でわかるように、一般的な使用法で、PHP からの「タグ」データのリストを持つ「記事」変数データを Twig テンプレート ローダーに割り当てます。しかし、データベースから「タグ」データをロードしてテンプレートに割り当てたくありません。「タグ」データが使用されているかどうかにかかわらず、サーバー接続とリソースを使用すると思うからです。
したがって、最良のアプローチは、Twig 内に実装されたイベント リスナー (フック) の概念を使用することだと思います。以下はそのプロセスです。
1) テンプレートをロードする前に、PHP ファイルのどこかにリスナーを準備しています: $this->twig->addListenerMethod($this, 'tags');
2) Twig が "tags" 変数を解析するとき、同じメソッド名が変数にアタッチされているリスナーがあるかどうかをチェックします。
3) リスナーが見つかると、Twig は親オブジェクト (記事) を最初のパラメーターとして渡すことによって指定されたメソッドを呼び出します。
4) メソッドが呼び出されると、必要に応じて処理し、必要な「タグ」データ リストを返します。
私の質問は次のとおりです。
1) Twig でイベント リスナー (フック) の概念を調べて実装できる Twig ソース ファイルはどれですか?
2) 上記で説明したように、Twig を使用して同じ実装を既に行っている人はいますか?
3) または誰か提案がありますか?
Twigのソースも掘り下げている間に、これについて多くの提案ができたらいいのにと思います。
ありがとう。
敬具。