include

The include statement includes a template and outputs the rendered content of that file:

include ステートメントにはテンプレートが含まれ、そのファイルのレンダリングされたコンテンツが出力されます。
1
2
3
{% include 'header.html' %}
    Body
{% include 'footer.html' %}

Note

ノート

It is recommended to use the include function instead as it provides the same features with a bit more flexibility:

同じ機能をより柔軟に提供するため、代わりに include 関数を使用することをお勧めします。
  • The include function is semantically more "correct" (including a template outputs its rendered contents in the current scope; a tag should not display anything);
    include 関数は意味的により「正確」です (includeing atemplate は現在のスコープでレンダリングされたコンテンツを出力します。タグは何も表示してはなりません)。
  • The include function is more "composable":

    include 関数はより「構成可能」です。
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    {# Store a rendered template in a variable #}
    {% set content %}
        {% include 'template.html' %}
    {% endset %}
    {# vs #}
    {% set content = include('template.html') %}
    
    {# Apply filter on a rendered template #}
    {% apply upper %}
        {% include 'template.html' %}
    {% endapply %}
    {# vs #}
    {{ include('template.html')|upper }}
  • The include function does not impose any specific order for arguments thanks to named arguments.
    インクルード関数は、名前付き引数のおかげで、引数に特定の順序を課しません。

Included templates have access to the variables of the active context.

含まれているテンプレートは、アクティブなコンテキストの変数にアクセスできます。

If you are using the filesystem loader, the templates are looked for in the paths defined by it.

ファイルシステムローダーを使用している場合、テンプレートはそれによって定義されたパスで検索されます。

You can add additional variables by passing them after the with keyword:

with キーワードの後に​​変数を渡すことで、追加の変数を追加できます。
1
2
3
4
5
{# template.html will have access to the variables from the current context and the additional ones provided #}
{% include 'template.html' with {'foo': 'bar'} %}

{% set vars = {'foo': 'bar'} %}
{% include 'template.html' with vars %}

You can disable access to the context by appending the only keyword:

only キーワードを追加することで、コンテキストへのアクセスを無効にすることができます。
1
2
{# only the foo variable will be accessible #}
{% include 'template.html' with {'foo': 'bar'} only %}
1
2
{# no variables will be accessible #}
{% include 'template.html' only %}

Tip

ヒント

When including a template created by an end user, you should consider sandboxing it. More information in the Twig for Developers chapter and in the sandbox tag documentation.

エンド ユーザーが作成したテンプレートを含める場合は、サンドボックス化を検討する必要があります。詳細については、Twig for Developerschapter およびサンドボックス タグのドキュメントを参照してください。

The template name can be any valid Twig expression:

テンプレート名は、任意の有効な Twig 式にすることができます:
1
2
{% include some_var %}
{% include ajax ? 'ajax.html' : 'not_ajax.html' %}

And if the expression evaluates to a \Twig\Template or a \Twig\TemplateWrapper instance, Twig will use it directly:

また、式が \Twig\Template または \Twig\TemplateWrapper インスタンスに評価される場合、Twig はそれを直接使用します。
1
2
3
4
5
// {% include template %}

$template = $twig->load('some_template.twig');

$twig->display('template.twig', ['template' => $template]);

You can mark an include with ignore missing in which case Twig will ignore the statement if the template to be included does not exist. It has to be placed just after the template name. Here some valid examples:

インクルードするテンプレートが存在しない場合、Twig はステートメントを無視します。テンプレート名の直後に配置する必要があります。ここにいくつかの有効な例があります:
1
2
3
{% include 'sidebar.html' ignore missing %}
{% include 'sidebar.html' ignore missing with {'foo': 'bar'} %}
{% include 'sidebar.html' ignore missing only %}

You can also provide a list of templates that are checked for existence before inclusion. The first template that exists will be included:

含める前に存在をチェックするテンプレートのリストを提供することもできます。存在する最初のテンプレートが含まれます。
1
{% include ['page_detailed.html', 'page.html'] %}

If ignore missing is given, it will fall back to rendering nothing if none of the templates exist, otherwise it will throw an exception.

ignore missing が指定されている場合、テンプレートが存在しない場合は何もレンダリングせず、存在しない場合は例外がスローされます。