Symfony入門|Twigのカスタムフィルターを自作する方法をやさしく解説
生徒
「Symfonyで画面を作っていたら、Twigっていうものが出てきたんですが、何をしているんですか?」
先生
「Twigは、画面に文字やデータを表示するための仕組みです。PHPの値を、見やすい形に変えて表示できます。」
生徒
「文字を大文字にしたり、加工したりもできますか?」
先生
「できます。そのときに使うのがフィルターです。しかも、自分でオリジナルのフィルターも作れます。」
生徒
「自分で作れるんですか? 難しそうです……」
先生
「順番に見ていけば大丈夫です。ゆっくり理解していきましょう。」
1. Twigとは何かをやさしく理解しよう
Twigは、Symfonyで使われるテンプレートエンジンです。テンプレートエンジンとは、画面に表示する文章やレイアウトを作るための仕組みのことです。 難しく聞こえますが、例えるなら「完成した文章に、あとから名前や数字をはめ込む型紙」のようなものです。 PHPのコードをそのまま画面に書くのではなく、Twigを使うことで、見た目と処理を分けて整理できます。
2. Twigフィルターとは何をするものか
Twigのフィルターは、文字や数字の形を変える道具です。料理で言えば、食材を切ったり味付けしたりする工程に似ています。 例えば、文字を大文字にしたり、日付の表示形式を変えたりできます。Twigには最初から用意されているフィルターもありますが、 「こういう変換が欲しい」と思ったときに、自分で作れるのがカスタムフィルターです。
3. カスタムフィルターを作る全体の流れ
SymfonyでTwigのカスタムフィルターを自作する流れは、とてもシンプルです。 PHPのクラスを一つ作り、その中で「この名前のフィルターは、この処理をします」と登録します。 難しい設定は少なく、Symfonyが自動で読み込んでくれるため、初心者でも安心して進められます。
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テンプレートでカスタムフィルターを使う
作成したカスタムフィルターは、Twigファイルですぐに使えます。 パイプ記号は「この値に、この加工をする」という意味を持っています。
<p>{{ '太郎' | hello }}</p>
こんにちは 太郎
6. 数字を加工する別パターンのフィルター
文字だけでなく、数字を加工するフィルターも作れます。 例えば、数字に「円」を付けて表示するフィルターは、金額表示でよく使われます。
public function priceFilter(int $number): string
{
return $number . '円';
}
7. Twigでの表示例を確認する
上のフィルターをTwigで使うと、数字が自然な日本語表現になります。 表示のルールをTwig側にまとめることで、PHPの処理がすっきりします。
<p>{{ 1000 | price }}</p>
1000円
8. カスタムフィルターを使うメリット
Twigのカスタムフィルターを使う最大のメリットは、表示ルールを一か所にまとめられる点です。 同じ処理を何度も書かずに済み、画面のコードも読みやすくなります。 初心者のうちは「表示の加工はTwigで行う」と覚えておくと、Symfonyの理解が深まります。