15

Twig のマクロインクルードの違いがよくわかりません。どちらも同じことをしているように見えます。つまり、いくつかの変数を取り、何かを出力します。

マクロやインクルードを使用する理由と、その違いは何ですか?

4

3 に答える 3

20

インクルードを使用すると、テンプレート全体を逐語的にインクルードできます。そのテンプレートは、現在スコープ内にあるすべてのテンプレート変数にアクセスできます。

マクロを使用すると、適切なオブジェクトを指定して特定のコンポーネントをレンダリングできる、Twig 内で一種の関数を定義します (テンプレートに渡されるデータだけでなく、他のアプリケーション ロジックにアクセスできる Twig 関数と混同しないでください)。たとえば、ショッピング リストをパラメーターとして受け取るショッピング リストをレンダリングするためのマクロを作成すると、別の場所で同じ方法でデータをテンプレートに渡したかどうかを気にせずに、このマクロを再利用できます。マクロに明示的に渡されていない変数は、そのマクロ内のスコープ内にありません。

マクロは実際には、データを取得して再利用可能なコンポーネントをレンダリングする特定のタスクを 1 つ実行する必要があります。インクルードは、任意のチャンクを構成できます-それはあなた次第です。Smarty のようなものとは対照的に、Twig テンプレートが機能する方法の拡張可能な性質は、設計上、インクルードを少なく使用する可能性が高いことを意味しますが、テンプレートの重複を回避する最も簡単な方法となるユース ケースがまだあります。 .

于 2012-01-19T15:05:07.813 に答える
1

Symfony2初心者ですが、twigマクロとインクルードの違いは以下の通りだと思います。

include: ヘッダー、サイドバー、スロットなど、ページ内の共通部分を定義するために使用されます。

マクロ: ページネーションなど、ビューに関連する機能を定義するために使用されます。

于 2011-10-08T08:00:19.727 に答える