Symfony Twigテンプレートのベースレイアウト作成方法を完全解説!初心者でもわかる画面共通化の基本
生徒
「SymfonyでWebページを作ると、毎回同じヘッダーやメニューを書くのが大変です…」
先生
「SymfonyではTwigテンプレートのベースレイアウトを使うことで、その悩みを解決できます。」
生徒
「ベースレイアウトって何ですか?パソコン初心者でも使えますか?」
先生
「大丈夫です。画面の型紙を作るイメージで、順番に説明していきます。」
1. Twigテンプレートとベースレイアウトとは?
Symfonyで画面を作るときに使うのがTwigテンプレートです。Twigとは、HTMLの中に少しだけ特別な書き方を追加できる仕組みで、画面表示を分かりやすく管理できます。 ベースレイアウトとは、ヘッダー・フッター・メニューなど、どのページでも共通して使う部分を一つにまとめた土台のことです。 例えるなら、ノートの表紙や罫線のような存在で、中身だけを差し替えて使い回せます。
2. SymfonyにおけるTwigの役割
Symfonyは、処理を行うPHPと、画面を表示するTwigを分けて管理します。これにより、プログラム初心者でも「見た目」と「動き」を混乱せずに理解できます。
TwigはHTMLに近い書き方なので、パソコンを触ったことがない人でも、文章を書く感覚で画面を作れます。
ファイルは通常、templatesフォルダの中に保存されます。
3. ベースレイアウト用Twigファイルを作成する
まず、画面の共通部分をまとめるためのファイルを作ります。一般的にはbase.html.twigという名前を使います。
このファイルが、すべてのページの土台になります。
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>{% block title %}Symfony入門{% endblock %}</title>
</head>
<body>
<header>
<h1>サンプルサイト</h1>
</header>
{% block body %}{% endblock %}
<footer>
<p>© Symfony Twig練習</p>
</footer>
</body>
</html>
4. block(ブロック)の考え方を理解する
blockとは、後から内容を差し替えられる場所の目印です。 「ここは空欄にしておいて、あとでページごとに内容を書く」という意味になります。 初心者の方は「付せんを貼る場所」と考えると分かりやすいです。
5. 子テンプレートでベースレイアウトを使う
次に、ベースレイアウトを利用するページを作ります。
extendsを使うことで、先ほど作った型紙を読み込みます。
{% extends 'base.html.twig' %}
{% block title %}トップページ{% endblock %}
{% block body %}
<p>これはトップページの内容です。</p>
{% endblock %}
6. 複数ページで同じレイアウトを使うメリット
ベースレイアウトを使うと、デザイン変更が一か所で済みます。 例えば、ヘッダーの文字を変えたい場合でも、base.html.twigを直すだけで全ページに反映されます。 修正ミスが減り、作業時間も短くなります。
7. TwigテンプレートとSymfonyコントローラの関係
Symfonyでは、コントローラと呼ばれるPHPファイルからTwigを呼び出します。 コントローラは「どの画面を表示するか」を決める役割です。
return $this->render('sample/index.html.twig');
8. 初心者がつまずきやすいポイント
よくある失敗は、ファイル名の間違いや、blockの書き忘れです。 Twigはエラー内容を画面に表示してくれるので、表示された英単語を落ち着いて確認しましょう。 最初は完璧を目指さず、動くことを優先すると理解が進みます。