Twig のマクロとインクルードの違いがよくわかりません。どちらも同じことをしているように見えます。つまり、いくつかの変数を取り、何かを出力します。
マクロやインクルードを使用する理由と、その違いは何ですか?
インクルードを使用すると、テンプレート全体を逐語的にインクルードできます。そのテンプレートは、現在スコープ内にあるすべてのテンプレート変数にアクセスできます。
マクロを使用すると、適切なオブジェクトを指定して特定のコンポーネントをレンダリングできる、Twig 内で一種の関数を定義します (テンプレートに渡されるデータだけでなく、他のアプリケーション ロジックにアクセスできる Twig 関数と混同しないでください)。たとえば、ショッピング リストをパラメーターとして受け取るショッピング リストをレンダリングするためのマクロを作成すると、別の場所で同じ方法でデータをテンプレートに渡したかどうかを気にせずに、このマクロを再利用できます。マクロに明示的に渡されていない変数は、そのマクロ内のスコープ内にありません。
マクロは実際には、データを取得して再利用可能なコンポーネントをレンダリングする特定のタスクを 1 つ実行する必要があります。インクルードは、任意のチャンクを構成できます-それはあなた次第です。Smarty のようなものとは対照的に、Twig テンプレートが機能する方法の拡張可能な性質は、設計上、インクルードを少なく使用する可能性が高いことを意味しますが、テンプレートの重複を回避する最も簡単な方法となるユース ケースがまだあります。 .
Symfony2初心者ですが、twigマクロとインクルードの違いは以下の通りだと思います。
include: ヘッダー、サイドバー、スロットなど、ページ内の共通部分を定義するために使用されます。
マクロ: ページネーションなど、ビューに関連する機能を定義するために使用されます。