カテゴリ: Symfony 更新日: 2026/02/18

Symfony入門|Twigのカスタムフィルターを自作する方法をやさしく解説

Twigのカスタムフィルターを自作する方法
Twigのカスタムフィルターを自作する方法

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

生徒

「Symfonyで画面を作っていたら、Twigっていうものが出てきたんですが、何をしているんですか?」

先生

「Twigは、画面に文字やデータを表示するための仕組みです。PHPの値を、見やすい形に変えて表示できます。」

生徒

「文字を大文字にしたり、加工したりもできますか?」

先生

「できます。そのときに使うのがフィルターです。しかも、自分でオリジナルのフィルターも作れます。」

生徒

「自分で作れるんですか? 難しそうです……」

先生

「順番に見ていけば大丈夫です。ゆっくり理解していきましょう。」

1. Twigとは何かをやさしく理解しよう

1. Twigとは何かをやさしく理解しよう
1. Twigとは何かをやさしく理解しよう

Twigは、Symfonyで使われるテンプレートエンジンです。テンプレートエンジンとは、画面に表示する文章やレイアウトを作るための仕組みのことです。 難しく聞こえますが、例えるなら「完成した文章に、あとから名前や数字をはめ込む型紙」のようなものです。 PHPのコードをそのまま画面に書くのではなく、Twigを使うことで、見た目と処理を分けて整理できます。

2. Twigフィルターとは何をするものか

2. Twigフィルターとは何をするものか
2. Twigフィルターとは何をするものか

Twigのフィルターは、文字や数字の形を変える道具です。料理で言えば、食材を切ったり味付けしたりする工程に似ています。 例えば、文字を大文字にしたり、日付の表示形式を変えたりできます。Twigには最初から用意されているフィルターもありますが、 「こういう変換が欲しい」と思ったときに、自分で作れるのがカスタムフィルターです。

3. カスタムフィルターを作る全体の流れ

3. カスタムフィルターを作る全体の流れ
3. カスタムフィルターを作る全体の流れ

SymfonyでTwigのカスタムフィルターを自作する流れは、とてもシンプルです。 PHPのクラスを一つ作り、その中で「この名前のフィルターは、この処理をします」と登録します。 難しい設定は少なく、Symfonyが自動で読み込んでくれるため、初心者でも安心して進められます。

4. PHPでTwig拡張クラスを作成する

4. PHPでTwig拡張クラスを作成する
4. PHPでTwig拡張クラスを作成する

まずは、Twig用の拡張クラスを作ります。これは「Twigに新しい機能を教える箱」のようなものです。 通常は src/Twig フォルダを作り、その中にクラスを置きます。


namespace App\Twig;

use Twig\Extension\AbstractExtension;
use Twig\TwigFilter;

class SampleFilterExtension extends AbstractExtension
{
    public function getFilters()
    {
        return [
            new TwigFilter('hello', [$this, 'helloFilter']),
        ];
    }

    public function helloFilter(string $value): string
    {
        return 'こんにちは ' . $value;
    }
}

5. Twigテンプレートでカスタムフィルターを使う

5. Twigテンプレートでカスタムフィルターを使う
5. Twigテンプレートでカスタムフィルターを使う

作成したカスタムフィルターは、Twigファイルですぐに使えます。 パイプ記号は「この値に、この加工をする」という意味を持っています。


<p>{{ '太郎' | hello }}</p>

こんにちは 太郎

6. 数字を加工する別パターンのフィルター

6. 数字を加工する別パターンのフィルター
6. 数字を加工する別パターンのフィルター

文字だけでなく、数字を加工するフィルターも作れます。 例えば、数字に「円」を付けて表示するフィルターは、金額表示でよく使われます。


public function priceFilter(int $number): string
{
    return $number . '円';
}

7. Twigでの表示例を確認する

7. Twigでの表示例を確認する
7. Twigでの表示例を確認する

上のフィルターをTwigで使うと、数字が自然な日本語表現になります。 表示のルールをTwig側にまとめることで、PHPの処理がすっきりします。


<p>{{ 1000 | price }}</p>

1000円

8. カスタムフィルターを使うメリット

8. カスタムフィルターを使うメリット
8. カスタムフィルターを使うメリット

Twigのカスタムフィルターを使う最大のメリットは、表示ルールを一か所にまとめられる点です。 同じ処理を何度も書かずに済み、画面のコードも読みやすくなります。 初心者のうちは「表示の加工はTwigで行う」と覚えておくと、Symfonyの理解が深まります。

カテゴリの一覧へ
新着記事
New1
CodeIgniter
CodeIgniterでRESTful API開発!初心者でもわかる全体構成ガイド
New2
Symfony
Symfonyのコントローラとは?作成・構造・役割を初心者向けにやさしく解説!
New3
Symfony
Symfonyでバリデーションメッセージを多言語対応する方法!初心者でもわかる国際化の基本
New4
Symfony
Symfonyのキャッシュ機構の基本を理解しよう(HTTPとアプリ別)
人気記事
No.1
Java&Spring記事人気No1
Laravel
Laravelのシングルアクションコントローラとは?使い方と利点
No.2
Java&Spring記事人気No2
Laravel
Laravelで動的パラメータをルートに渡す方法!初心者にもやさしいルートパラメータの使い方入門
No.3
Java&Spring記事人気No3
Laravel
LaravelのBlade構文まとめ!@if @foreach など基本ディレクティブ解説
No.4
Java&Spring記事人気No4
Laravel
Laravelでキャッシュを使う方法(ファイル・Redis・Memcached)
No.5
Java&Spring記事人気No5
Laravel
Laravelで名前付きルートを設定する方法!初心者でもわかるroute()関数の使い方
No.6
Java&Spring記事人気No6
Laravel
Laravelのマイグレーション履歴を確認する方法を徹底解説!migrate:statusの使い方
No.7
Java&Spring記事人気No7
Symfony
Symfonyの依存性注入(DI)とは?コンストラクタでの注入方法を初心者向けに徹底解説
No.8
Java&Spring記事人気No8
Laravel
Laravelでコントローラを作成する方法(artisanコマンド)