includeでテンプレート部品を読み込む
twig
{% include 'components/card.html.twig' with { product: product } only %}onlyを付けると、指定した変数だけを読み込み先へ渡せます。部品が暗黙に親の変数へ依存するのを防げます。
include関数を使う
twig
{{ include('components/card.html.twig', { product: product }, with_context: false) }}Twig公式ドキュメントでは、値として合成しやすいinclude関数も案内されています。既存コードの方針に合わせて選びます。
extendsとblockでレイアウトを継承する
twig
{# pages/product.html.twig #}
{% extends 'base.html.twig' %}
{% block title %}{{ product.name|e }}{% endblock %}
{% block content %}
<h1>{{ product.name|e }}</h1>
{% endblock %}extendsは子テンプレートの先頭のタグとして置き、親が定義したblockを子側で上書きします。親の内容も残す場合はparent()を使います。
- ▸繰り返し表示する小さな部品はinclude
- ▸ページ全体の共通骨格はextendsとblock
- ▸部品の入力を明確にするならwithとonlyを組み合わせる
