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

Twigのテンプレート継承を完全ガイド!初心者でもわかるbase.html.twigの使い方と構造

Twigのテンプレート継承の仕組みと活用方法(base.html.twigなど)
Twigのテンプレート継承の仕組みと活用方法(base.html.twigなど)

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

生徒

「Twigで毎回HTMLの同じ部分を書くのって大変じゃないですか?」

先生

「そのとおりですね。そういうときには、テンプレート継承という仕組みを使うと便利です。」

生徒

「テンプレート継承ってなんですか?初心者でも使えますか?」

先生

「はい、Twigではbase.html.twigという親テンプレートを作って、子テンプレートで使い回すことができます。これから、やさしく説明していきますよ!」

1. Twigのテンプレート継承とは?

1. Twigのテンプレート継承とは?
1. Twigのテンプレート継承とは?

Twigのテンプレート継承とは、「共通のテンプレートを親として用意しておき、そこに共通のレイアウトを書いておいて、子テンプレートがそれを引き継ぐ」仕組みのことです。

たとえば、ヘッダーやフッター、ナビゲーションメニューなど、どのページにも共通して表示したい内容をbase.html.twigというテンプレートにまとめておきます。これによって、毎回同じHTMLを書かなくても、ページごとに必要な内容だけを書けば済むようになります。

まるで、料理の「お皿」を最初に用意しておいて、上に盛り付ける具材だけ変えるようなイメージです。

2. base.html.twigを作成する

2. base.html.twigを作成する
2. base.html.twigを作成する

まずは、共通部分をまとめたbase.html.twigというファイルを作成します。これは、templates/フォルダに保存します。


<!DOCTYPE html>
<html>
  <head>
    <meta charset="UTF-8">
    <title>{% block title %}デフォルトタイトル{% endblock %}</title>
  </head>
  <body>
    <header>
      <h1>共通ヘッダー</h1>
    </header>

    <main>
      {% block body %}{% endblock %}
    </main>

    <footer>
      <p>共通フッター</p>
    </footer>
  </body>
</html>

{% block %}は「ここに子テンプレートの内容を入れてね」という印です。中身を差し込むための「空欄」を用意しておくようなイメージです。

3. 子テンプレートから継承する

3. 子テンプレートから継承する
3. 子テンプレートから継承する

次に、子テンプレートを作成して、先ほどのbase.html.twigを引き継いで使う方法を見てみましょう。

例えばhome.html.twigというファイルを作って、次のように書きます。


{% extends 'base.html.twig' %}

{% block title %}ホームページ{% endblock %}

{% block body %}
  <p>こんにちは、これはホームページの内容です。</p>
{% endblock %}

{% extends %}は、「このテンプレートはbase.html.twigを引き継ぎます」という意味です。そして、{% block title %}{% block body %}の中に、それぞれのページで表示したい内容を入れていきます。

4. 実際に表示されるHTML

4. 実際に表示されるHTML
4. 実際に表示されるHTML

上記の継承を使うと、Symfonyがテンプレートを合体させて、以下のようなHTMLを自動で作ってくれます。


<!DOCTYPE html>
<html>
  <head>
    <meta charset="UTF-8">
    <title>ホームページ</title>
  </head>
  <body>
    <header>
      <h1>共通ヘッダー</h1>
    </header>

    <main>
      <p>こんにちは、これはホームページの内容です。</p>
    </main>

    <footer>
      <p>共通フッター</p>
    </footer>
  </body>
</html>

このように、共通の部分はbase.html.twigに書いておいて、それ以外の部分だけを子テンプレートで書くことで、効率よくページを作ることができます。

5. よく使うblock名の例

5. よく使うblock名の例
5. よく使うblock名の例

実際のプロジェクトでは、いろいろなblockを使い分けて、細かい部分も柔軟に差し替えられるようにしておくと便利です。以下は、よく使われるblockの例です。

  • title:ブラウザのタイトルバーに表示する文字
  • stylesheets:CSSを追加する場所
  • javascripts:JavaScriptを追加する場所
  • body:ページのメインの内容

プロジェクトの設計に合わせて、自由にblockを増やすことができます。

6. テンプレート継承を使うメリット

6. テンプレート継承を使うメリット
6. テンプレート継承を使うメリット

テンプレート継承を使うことで、以下のような多くのメリットがあります。

  • 同じHTMLを何度も書かなくていい
  • デザインの変更が1か所で済む(共通部分を直せば全ページに反映)
  • ファイルが見やすく、読みやすい
  • 他の人との共同作業がしやすい

つまり、テンプレート継承は、ウェブページを効率よく、キレイに作っていくための大切な仕組みなのです。

関連記事:
カテゴリの一覧へ
新着記事
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のルートキャッシュ機能を活用してパフォーマンス改善!初心者でもわかる完全ガイド