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

Twigのif文でクラス名を切り替える方法!Symfonyテンプレート初心者必見ガイド

Twigで条件付きクラス名を出力する方法
Twigで条件付きクラス名を出力する方法

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

生徒

「SymfonyのテンプレートってTwigですよね?条件によってCSSのクラスを変えたいときって、どうやって書けばいいですか?」

先生

「その通り!SymfonyではTwigというテンプレートエンジンを使います。条件によってクラス名を変更するのもTwigで簡単にできますよ。」

生徒

「HTMLのclass属性の中で、if文みたいに切り替えられるんですか?」

先生

「もちろんできます。Twigにはif文も三項演算子も使えるので、状況に応じたクラス切り替えが可能です!」

1. Twigとは?テンプレートエンジンの基本を知ろう

1. Twigとは?テンプレートエンジンの基本を知ろう
1. Twigとは?テンプレートエンジンの基本を知ろう

Twig(トゥウィッグ)とは、Symfonyフレームワークで使用されているテンプレートエンジンのことです。テンプレートエンジンとは、HTMLとプログラムの中間のようなもので、「画面に何を表示するか」を担当する部分です。

たとえば、変数の中身をHTMLに表示したり、条件によって表示する内容を切り替えたりできます。Twigでは、{{ }}を使って変数を表示し、{% %}で処理(if文やfor文など)を書くのが基本ルールです。

2. HTMLのclass属性とは?

2. HTMLのclass属性とは?
2. HTMLのclass属性とは?

class(クラス)属性は、HTMLのタグにスタイル(見た目)を適用するための名前を付けるものです。たとえば、赤い文字にしたいときにred-textというクラスを付けて、CSSでその見た目を指定します。

条件によってクラス名を切り替えると、あるときは赤く、あるときは青く…と、表示が柔軟に変えられます。

3. Twigでクラスを切り替える基本パターン

3. Twigでクラスを切り替える基本パターン
3. Twigでクラスを切り替える基本パターン

それでは、Twigで条件によってクラス名を切り替える具体的なコードを見てみましょう。下記は、変数isActiveの値によってactiveクラスを付けるかどうかを切り替える例です。


<div class="{{ isActive ? 'active' : 'inactive' }}">
    メニュー項目
</div>

このように、Twigでは三項演算子(さんこうえんざんし)を使うことで、1行で条件分岐ができます。

三項演算子とは、条件 ? 真のときの値 : 偽のときの値という形で、簡単にif文のような処理を行える書き方のことです。

4. if文を使ったクラス名の切り替え

4. if文を使ったクラス名の切り替え
4. if文を使ったクラス名の切り替え

もっと初心者向けに、if文を使って丁寧に書く方法もあります。下記のように書くと、条件によってクラス名を切り替えることができます。


{% if isActive %}
    <div class="active">メニュー項目</div>
{% else %}
    <div class="inactive">メニュー項目</div>
{% endif %}

この書き方なら、まだ三項演算子に慣れていない方でも理解しやすく、読みやすいですね。

5. 複数のクラス名を組み合わせるには?

5. 複数のクラス名を組み合わせるには?
5. 複数のクラス名を組み合わせるには?

クラス名を複数同時に使いたい場合もTwigなら簡単です。例えば、baseという基本のクラスに、条件でhighlightクラスを追加したいときは次のように書きます。


<div class="base {{ isImportant ? 'highlight' : '' }}">
    お知らせ
</div>

isImportanttrueならhighlightが付き、falseなら空白になります。これでHTMLの構造を崩さず、動的なスタイル変更が可能です。

6. よくあるミスと注意点

6. よくあるミスと注意点
6. よくあるミスと注意点

条件付きでクラスを出力する際にありがちなミスは、スペースを忘れることです。たとえば、次のように書いてしまうと…


<div class="base{{ isImportant ? 'highlight' : '' }}">
</div>

この場合、クラス名がbasehighlightという1つの文字列になってしまい、CSSが正しく適用されません。

正しくは、空白を間に入れて、次のようにしましょう。


<div class="base {{ isImportant ? 'highlight' : '' }}">
</div>

7. 実際の表示結果を確認してみよう

7. 実際の表示結果を確認してみよう
7. 実際の表示結果を確認してみよう

たとえば、次のようにTwigテンプレートを書いて、isImportanttrueのときは背景色が黄色、そうでなければ背景なしというCSSを適用してみましょう。


<style>
.highlight {
    background-color: yellow;
}
</style>

<div class="notice {{ isImportant ? 'highlight' : '' }}">
    本日の更新情報
</div>

実行結果(isImportant = trueの場合)


<div class="notice highlight">
    本日の更新情報
</div>

8. 変数の値によって複雑な条件も可能

8. 変数の値によって複雑な条件も可能
8. 変数の値によって複雑な条件も可能

Twigでは、変数の値が複雑な場合でも、比較演算子を使って柔軟に対応できます。たとえば、user.roleという変数があり、それが「admin」かどうかでクラス名を切り替えるときは、次のように書きます。


<div class="{{ user.role == 'admin' ? 'admin-panel' : 'user-panel' }}">
    ダッシュボード
</div>

このように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のルートキャッシュ機能を活用してパフォーマンス改善!初心者でもわかる完全ガイド
No.7
Java&Spring記事人気No7
Laravel
LaravelでルートをBladeテンプレートに記述する方法(route関数)
No.8
Java&Spring記事人気No8
Laravel
Laravelでログを出力する方法(Monolog・storage/logs)