カテゴリ: Symfony 更新日: 2025/11/13

Twigのテンプレート分割と再利用を完全解説!初心者向けinclude・embedの使い方

Twigのテンプレート分割と再利用(include, embed)
Twigのテンプレート分割と再利用(include, embed)

先生と生徒の会話形式で理解しよう

生徒

「Twigのテンプレートが長くなってきたので、整理したいんですけど、どうすればいいですか?」

先生

「そんな時は、テンプレートの分割と再利用が便利ですよ。Twigにはincludeembedという便利な機能があります。」

生徒

「それってHTMLの部品を分けるみたいな感じですか?」

先生

「まさにそのとおり!では、Twigでテンプレートを分割して再利用する方法を一緒に見ていきましょう。」

1. Twigでテンプレートを分割する理由とは?

1. Twigでテンプレートを分割する理由とは?
1. Twigでテンプレートを分割する理由とは?

Symfonyでは、Twigを使ってHTMLテンプレートを作成しますが、画面が複雑になると1つのファイルがとても長くなってしまいます。これでは修正もしづらく、読みづらいコードになってしまいます。

そこでTwigのincludeembedを使うことで、テンプレートを部品ごとに分けて、再利用可能にすることができます。

2. includeの使い方:テンプレートを読み込む基本

2. includeの使い方:テンプレートを読み込む基本
2. includeの使い方:テンプレートを読み込む基本

includeは、別のテンプレートファイルをその場に読み込んで表示するための構文です。たとえば、ヘッダー部分だけを別ファイルにしておき、必要なところで読み込むことができます。

次のように使います。


{% include 'partials/header.html.twig' %}

このコードは、partials/header.html.twigというテンプレートを現在の位置に挿入するという意味です。

3. 実際にテンプレートを分割してみよう

3. 実際にテンプレートを分割してみよう
3. 実際にテンプレートを分割してみよう

たとえば、ヘッダー・フッター・ナビゲーションを分割する場合、以下のような構成になります。


<!-- layout.html.twig -->
<html>
  <body>
    {% include 'partials/header.html.twig' %}
    {% include 'partials/nav.html.twig' %}
    
    <main>
      {% block content %}{% endblock %}
    </main>
    
    {% include 'partials/footer.html.twig' %}
  </body>
</html>

これで、共通部分を一か所にまとめて管理できるようになります。

4. embedとは?includeより少し便利な構文

4. embedとは?includeより少し便利な構文
4. embedとは?includeより少し便利な構文

embedincludeに似ていますが、読み込んだテンプレートの中のblockを上書きしてカスタマイズできる点が特徴です。

つまり、「元の部品の構造は使いつつ、一部だけ変えたい」という場合に便利です。

次のように使います。


{% embed 'components/card.html.twig' %}
    {% block title %}お知らせ{% endblock %}
    {% block content %}新機能をリリースしました。{% endblock %}
{% endembed %}

このように書くと、card.html.twigの中に定義されたblock titleblock contentの内容を、上書きして使うことができます。

5. embedを使ったカスタマイズ可能なパーツの例

5. embedを使ったカスタマイズ可能なパーツの例
5. embedを使ったカスタマイズ可能なパーツの例

例えば、components/card.html.twigが次のように書かれているとします。


<div class="card mb-3">
    <div class="card-header">
        {% block title %}デフォルトタイトル{% endblock %}
    </div>
    <div class="card-body">
        {% block content %}デフォルト内容{% endblock %}
    </div>
</div>

この構成をベースにしつつ、表示内容だけを差し替えられるので、共通パーツを大量に使う場合でも非常に便利です。

6. includeとembedの使い分け

6. includeとembedの使い分け
6. includeとembedの使い分け

簡単にまとめると次のように使い分けるのがおすすめです。

  • include:そのまま表示すればOKな部品(ヘッダー、フッターなど)
  • embed:内容を一部だけ変更したい部品(カード、通知ボックスなど)

特に大規模なWebアプリでは、共通パーツの再利用が重要になるので、この2つの使い分けはしっかり覚えておきましょう。

7. Twigで再利用可能なデザインを作るメリット

7. Twigで再利用可能なデザインを作るメリット
7. Twigで再利用可能なデザインを作るメリット

Twigでテンプレートを分割して再利用することで、次のようなメリットがあります。

  • テンプレートの見通しがよくなる
  • 修正が一箇所で済む(再利用されているため)
  • 開発スピードが上がる
  • HTMLの重複を減らせる

これはまさに「部品化」された設計で、初心者でも扱いやすく、プロジェクトが大きくなっても崩れにくいのが魅力です。

関連記事:
カテゴリの一覧へ
新着記事
New1
Laravel
Laravelの認証状態をチェックする方法を完全解説!authとAuth::check()を初心者向けにやさしく説明
New2
CodeIgniter
CodeIgniterのコントローラクラスの作り方を完全ガイド!初心者でもわかる基礎から実践まで
New3
Symfony
Symfonyのフォームラベルを多言語対応!初心者でもわかる翻訳設定ガイド
New4
Laravel
Laravelでユーザー登録機能を作る方法!初心者向けにバリデーションとリダイレクトをやさしく解説
人気記事
No.1
Java&Spring記事人気No1
Laravel
Laravelのデータベース設定方法を完全ガイド!初心者でもわかる.envファイルの使い方
No.2
Java&Spring記事人気No2
Laravel
Laravelのビューとは?Bladeテンプレートの基本を解説
No.3
Java&Spring記事人気No3
Laravel
Laravelでセッションを扱う方法!保存方法と利用例を解説
No.4
Java&Spring記事人気No4
Laravel
Laravelのルート一覧を確認する方法!初心者でもわかるphp artisan route:listの使い方
No.5
Java&Spring記事人気No5
Laravel
Laravelでルーティングを設定する方法!web.phpと基本ルートの書き方を初心者向けに徹底解説
No.6
Java&Spring記事人気No6
Laravel
Laravelでログを出力する方法(Monolog・storage/logs)
No.7
Java&Spring記事人気No7
Laravel
LaravelでルートをBladeテンプレートに記述する方法(route関数)
No.8
Java&Spring記事人気No8
Laravel
Laravelのルートキャッシュ機能を活用してパフォーマンス改善!初心者でもわかる完全ガイド