カテゴリ: 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
Symfony
Symfonyのルーティング構成の基本を完全解説!初心者向けにYAML・PHP・アノテーション方式をやさしく紹介
New2
Laravel
Laravelのルートグループの使い方!初心者でもわかるprefixやミドルウェアの設定方法
New3
PHP
PHPのswitch文の使い方!多くの条件分岐をスッキリ書く方法と注意点
New4
Symfony
Symfony学習に役立つおすすめドキュメント・教材・リソース一覧【初心者向け】
人気記事
No.1
Java&Spring記事人気No1
PHP
PHPで文字列を結合する方法!ドット演算子と代入演算子の使い方を徹底解説
No.2
Java&Spring記事人気No2
PHP
PHPのif文の使い方を完全ガイド!初心者でもわかる条件分岐の基本
No.3
Java&Spring記事人気No3
Symfony
Symfonyで翻訳(i18n)機能を使う方法を解説!初心者にもわかる国際化対応の基本
No.4
Java&Spring記事人気No4
Laravel
Laravelのresponse()関数の使い方を完全ガイド!初心者でもわかるレスポンス制御とHTTPレスポンスの基本
No.5
Java&Spring記事人気No5
Laravel
LaravelのAPIルーティングを設定する方法!初心者でもわかるapi.phpの使い方
No.6
Java&Spring記事人気No6
Laravel
Laravelのインストール方法まとめ!ComposerとLaravel Installerの使い方
No.7
Java&Spring記事人気No7
PHP
PHPのswitch文の使い方!多くの条件分岐をスッキリ書く方法と注意点
No.8
Java&Spring記事人気No8
CodeIgniter
CodeIgniterルーティングを完全攻略!正規表現でURLを自由自在に操る方法