Symfony Best Practice - 実践編 Chapter6,8-
前回
いじった結果は随時GitHubにあげていきます。
Chapter6はテンプレートについてです。 Symfony2で作ったTwigのフィルターをSymfony3で使う形にしてみようと思います。
最終的な形は以下です。
Twigエクステンションを作る
ベストプラクティスに従って作ってみます。 まずは、エクステンションのクラスを作ります。
- コンストラクタでメイン言語のtranslatorと併記する言語(sub locale)をインジェクトします。
- getFilters()/getName() は自前のエクステンションの情報を返せるようにオーバーライドします。
- multiTrans()でメインの処理を書きます。
https://github.com/hanahiroAze/symfony3_demo/pull/1/files#diff-32cc6ad49a0083779d7ee61592a42aa3
localeをいじるためのEventListenerを書きます。本家のまんまコピーです。
https://github.com/hanahiroAze/symfony3_demo/pull/1/files#diff-4968cc448d20825bee969ece9686fffa
次にサービスに登録します。この時EventListenerも登録してます。
https://github.com/hanahiroAze/symfony3_demo/pull/1/files#diff-1728bfc1c274f341afc1a0275fca694d
ここまでで自作エクステンションの追加が出来ました。
画面から使うために翻訳ファイルに手を入れます。 今回はわかりやすいようにヘッダーの「Symfony Demo」を併記してみます。
翻訳ファイルに「Symfony Demo」の対訳を追加します。
https://github.com/hanahiroAze/symfony3_demo/pull/1/files#diff-1848a926db6eb9fbe0e97b401f58d947
最後にTwigにフィルターを適用します。
https://github.com/hanahiroAze/symfony3_demo/pull/1/files#diff-a2f33b79364623e3cb2737239c5eee62
実行結果
無事併記されました!