カテゴリ: Symfony 更新日: 2026/01/09

SymfonyでTwigテンプレートを表示する方法を完全ガイド!初心者にもわかるHTMLとの違いや使い方

SymfonyでTwigテンプレートを表示する方法
SymfonyでTwigテンプレートを表示する方法

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

生徒

「Symfonyで画面を表示したいときって、どうやってHTMLを使うんですか?」

先生

「Symfonyでは、HTMLの代わりにTwig(トゥイッグ)というテンプレートエンジンを使うのが一般的です。」

生徒

「Twigって何ですか?普通のHTMLじゃダメなんですか?」

先生

「Twigは、HTMLをもっと便利に書けるようにしたものです。Symfonyととても相性がいいんですよ。これから、Twigテンプレートの基本と表示方法を一緒に学んでいきましょう!」

1. Twigテンプレートとは?HTMLとの違い

1. Twigテンプレートとは?HTMLとの違い
1. Twigテンプレートとは?HTMLとの違い

Twig(トゥイッグ)は、Symfony専用に作られたテンプレートエンジンで、画面に表示する内容を効率よく書くための仕組みです。テンプレートエンジンとは、HTMLをより簡単に管理するためのツールで、PHPのコードと混ざらないようにする役割もあります。

例えば、変数を表示したり、繰り返し処理をしたり、条件分岐をしたりといった操作を、Twigではとてもシンプルに書けます。

HTMLは単純に文字や画像などを表示する言語ですが、Twigはその中にロジック(処理)を含めることができるのが特徴です。

2. Twigテンプレートファイルの場所

2. Twigテンプレートファイルの場所
2. Twigテンプレートファイルの場所

SymfonyでTwigテンプレートを使うときは、ファイルを特定の場所に置く必要があります。テンプレートは基本的に、次のディレクトリ(フォルダ)に保存します。


projectディレクトリ/
└─ templates/
   └─ hello.html.twig

ファイル名の末尾が.html.twigとなっているのがTwigテンプレートの特徴です。

3. コントローラからTwigテンプレートを表示する方法

3. コントローラからTwigテンプレートを表示する方法
3. コントローラからTwigテンプレートを表示する方法

Symfonyでは、コントローラという場所から画面を表示する命令を出します。その際にrenderという関数を使って、Twigテンプレートを指定します。

以下は、Twigテンプレートを表示する基本的なコントローラのコードです。


use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
use Symfony\Component\HttpFoundation\Response;
use Symfony\Component\Routing\Annotation\Route;

class HelloController extends AbstractController
{
    #[Route('/hello', name: 'hello_page')]
    public function index(): Response
    {
        return $this->render('hello.html.twig', [
            'name' => 'たろうさん',
        ]);
    }
}

このように、render()関数の中でテンプレート名と表示させたいデータを渡すことで、Twigテンプレートがブラウザに表示されます。

4. Twigテンプレートの基本的な書き方

4. Twigテンプレートの基本的な書き方
4. Twigテンプレートの基本的な書き方

それでは、さきほどのコントローラで表示したhello.html.twigの中身を見てみましょう。


<!DOCTYPE html>
<html>
  <head>
    <meta charset="UTF-8">
    <title>こんにちはページ</title>
  </head>
  <body>
    <h1>こんにちは、{{ name }}!</h1>
  </body>
</html>

{{ name }}という記述は、「変数nameの中身を表示する」というTwigの書き方です。PHPのechoと同じような意味ですが、もっとスッキリ書けます。

5. Twigで条件分岐や繰り返し処理もできる

5. Twigで条件分岐や繰り返し処理もできる
5. Twigで条件分岐や繰り返し処理もできる

Twigテンプレートでは、ただの文字表示だけでなく、条件分岐(ある条件のときだけ表示する)や繰り返し処理(リストをぐるぐる回して表示する)もできます。

以下は簡単な例です。

条件分岐(if文)


{% if name == 'たろうさん' %}
  <p>ようこそ、たろうさん!</p>
{% else %}
  <p>こんにちは、誰かさん!</p>
{% endif %}

繰り返し処理(for文)


<ul>
  {% for item in ['りんご', 'みかん', 'バナナ'] %}
    <li>{{ item }}</li>
  {% endfor %}
</ul>

このように、Twigではプログラムっぽい処理も簡単にHTMLの中に書けるので、画面の内容を動的に変えるのにとても便利です。

6. TwigテンプレートにCSSを追加する方法

6. TwigテンプレートにCSSを追加する方法
6. TwigテンプレートにCSSを追加する方法

画面のデザインを整えるには、CSS(シーエスエス)という装飾用の言語を使います。Twigテンプレートの中でも、HTMLと同じように<link>タグを使ってCSSファイルを読み込めます。


<head>
  <link rel="stylesheet" href="/css/style.css">
</head>

このようにすれば、public/css/style.cssに保存したCSSファイルが画面に適用されます。

7. Twigでのコメントの書き方

7. Twigでのコメントの書き方
7. Twigでのコメントの書き方

Twigでは、表示されない「メモ」のようなコメントも書くことができます。自分や他の人が読んだときに、説明を残しておくのに便利です。


{# これはTwigのコメントです #}

このコメントは、ブラウザには表示されません。

まとめ

まとめ
まとめ

Twigテンプレートを使った画面表示の考え方を振り返る

この記事では、SymfonyにおけるTwigテンプレートの基本的な役割から、実際に画面を表示するまでの流れを丁寧に見てきました。SymfonyでWebアプリケーションを作る際、画面表示は必ず必要になる要素であり、その中心となるのがTwigテンプレートです。Twigは単なるHTMLの代替ではなく、表示専用の仕組みとして設計されているため、処理と見た目をきれいに分離できる点が大きな特徴です。

コントローラではデータの準備や処理を行い、Twigテンプレートでは受け取ったデータを使ってHTMLとして表示します。この役割分担を意識することで、コードが整理され、読みやすく、保守しやすい構成になります。SymfonyとTwigを組み合わせることで、初心者でも安全で分かりやすい画面表示を実現できるようになります。

TwigとHTMLの違いを理解する重要性

HTMLは画面を構成するための基本的な言語ですが、単体では条件分岐や繰り返し処理を行うことができません。Twigテンプレートを使うことで、HTMLの中に変数表示やif文、for文といった処理を自然な形で組み込めます。これにより、ユーザーごとに内容を変えたり、データの数に応じて表示を増減させたりといった動的な画面作成が可能になります。

また、TwigではPHPのコードを直接書かないため、セキュリティ面でも安心感があります。表示に必要な最低限の機能だけを使う設計になっているため、意図しない処理が実行されにくく、Symfonyの思想ともよく合っています。HTMLとTwigの違いを理解することは、Symfony開発の第一歩と言えるでしょう。

コントローラとTwigの連携ポイント

コントローラからTwigテンプレートを表示する際は、renderメソッドを使ってテンプレート名とデータを渡します。このとき、配列で渡したデータはTwig側で変数として扱われます。どのデータが画面で使われているのかを意識しながら書くことで、処理の流れが把握しやすくなります。


return $this->render('sample.html.twig', [
    'title' => 'サンプルページ',
]);

上記のようなシンプルな書き方でも、Twigテンプレートでは柔軟な表示が可能です。データの受け渡しに慣れてくると、画面ごとに必要な情報を整理して設計できるようになります。

Twigの基本構文を使いこなすメリット

Twigの変数表示、条件分岐、繰り返し処理は、画面作成の中で頻繁に使われます。特にfor文を使った一覧表示は、実務でもよく登場します。配列やリストを受け取り、それをHTMLのリストとして表示する流れは、多くのWebアプリケーションで共通しています。


<ul>
  {% for value in values %}
    <li>{{ value }}</li>
  {% endfor %}
</ul>

このような書き方に慣れておくことで、SymfonyとTwigを使った画面作成がスムーズになります。CSSの読み込みやコメントの使い方も含めて理解しておくと、見た目と中身の両方を意識した開発ができるようになります。

先生と生徒の振り返り会話

生徒「Twigって、ただのHTMLじゃなくて、画面表示専用の仕組みなんですね。」

先生「そうです。処理はコントローラ、表示はTwigと役割を分けるのがSymfonyの基本です。」

生徒「変数やif文、for文が使えるので、画面を柔軟に作れるのが分かりました。」

先生「その理解はとても大切です。Twigを使いこなせると、画面作成が一気に楽になります。」

生徒「これからは、HTMLだけでなくTwigの書き方も意識してテンプレートを書いてみます。」

先生「ぜひ続けてください。SymfonyとTwigを組み合わせれば、読みやすく安全なWebアプリが作れますよ。」

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