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

Twigのカスタム関数・フィルターの作り方を徹底解説!初心者向けSymfonyテンプレート講座

Twigでカスタム関数・フィルターを定義する方法
Twigでカスタム関数・フィルターを定義する方法

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

生徒

「Twigで独自の関数やフィルターって作れますか? 既存のじゃ足りなくて…」

先生

「はい、Twigではカスタム関数やフィルターを自分で定義することができます。表示を自由にコントロールできますよ。」

生徒

「でも関数とかフィルターって難しそうです…初心者でも作れますか?」

先生

「もちろんです。実際の例を使いながら、やさしく説明していきますね!」

1. Twigのカスタム関数・フィルターとは?

1. Twigのカスタム関数・フィルターとは?
1. Twigのカスタム関数・フィルターとは?

まず、Twigでいう「関数」とは、テンプレートの中で何か特別な処理をしたいときに使う命令のことです。そして「フィルター」とは、変数の内容を変換・加工するための仕組みです。

例えば「文字を大文字にする」「日付をフォーマットする」など、Twigには既に多くのフィルターが用意されていますが、自分でオリジナルのフィルターや関数も追加できるのです。

2. カスタムTwig拡張クラスの作成

2. カスタムTwig拡張クラスの作成
2. カスタムTwig拡張クラスの作成

Symfonyでは、Twigの拡張機能を作るには、TwigExtensionクラスを作成して、サービスとして登録します。

まず、次のようなクラスを作成してみましょう。


namespace App\Twig;

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

class AppExtension extends AbstractExtension
{
    public function getFunctions(): array
    {
        return [
            new TwigFunction('greeting', [$this, 'greetingFunction']),
        ];
    }

    public function getFilters(): array
    {
        return [
            new TwigFilter('reverse', [$this, 'reverseFilter']),
        ];
    }

    public function greetingFunction(string $name): string
    {
        return 'こんにちは、' . $name . 'さん!';
    }

    public function reverseFilter(string $text): string
    {
        return strrev($text);
    }
}

ここでは、greeting関数と、reverseフィルターの2つを定義しています。これでTwigテンプレート内から使用できるようになります。

3. サービスとして登録しよう(自動登録)

3. サービスとして登録しよう(自動登録)
3. サービスとして登録しよう(自動登録)

Symfony 4以降では、自動的にTwigにサービスが登録されるため、特別な設定は不要です。ただし、サービスファイルにあるservices.yamlで自動登録が有効になっていることは確認しましょう。


# config/services.yaml
services:
    App\Twig\:
        resource: '../src/Twig'
        tags: ['twig.extension']

これで、Twig内から自作した関数・フィルターが使えるようになります。

4. Twigテンプレートでカスタム関数を使う

4. Twigテンプレートでカスタム関数を使う
4. Twigテンプレートでカスタム関数を使う

では、先ほど作成したgreeting関数をTwigで実際に使ってみましょう。


<p>{{ greeting('太郎') }}</p>

これは「こんにちは、太郎さん!」というメッセージを出力します。独自の挨拶機能など、表示内容を自由に変えたいときに便利です。

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

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

次に、reverseというフィルターを使って、文字列を逆さに表示する例です。


<p>{{ 'Symfony'|reverse }}</p>

このように書くと、ymonfSのように文字が反転して表示されます。文章や文字列の加工処理を入れたいときに非常に便利です。

6. カスタムTwig機能の活用例

6. カスタムTwig機能の活用例
6. カスタムTwig機能の活用例

カスタム関数やフィルターを使うことで、次のような場面でTwigテンプレートをより便利にできます。

  • 会員名の敬称付け(例:「様」「さん」など)
  • 郵便番号や電話番号のフォーマット処理
  • 改行文字をHTMLの<br>に変換
  • 特定キーワードのハイライト表示

複雑な処理はPHP側で書いて、Twigではシンプルに表示に集中できるように設計できます。

7. Twigでの命名と注意点

7. Twigでの命名と注意点
7. Twigでの命名と注意点

カスタム関数・フィルターを作るときは、次のような点に注意しましょう。

  • 関数名・フィルター名はわかりやすく:処理の内容が伝わる名前にすること。
  • 変数の型に注意:文字列だけでなく配列などを扱うときは型チェックをしましょう。
  • 共通ロジックの再利用:同じ処理が何度もあるならTwig拡張で一元化すると便利です。
関連記事:
カテゴリの一覧へ
新着記事
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のルートキャッシュ機能を活用してパフォーマンス改善!初心者でもわかる完全ガイド