検証環境 Symfony3.4
Symfonyを使ってTwigに対してグローバル変数を設定する方法です。
マニュアルを見る限り、ほかのバージョンでも動作可能だと思います。
configファイルでグローバル変数を設定する。
基本的には、下記のようにコンフィグに追加するだけで設定可能です。
# app/config/config.yml twig: globals: main_color: 'red' ... # sample twig {{ dump(main_color) }} // result red
とてもシンプルです。もちろんサービスコンテナ内のパラメータを使用することも可能です。
# Using Service Container Parameters # app/config/parameters.yml parameters: main_color: 'red' # app/config/config.yml twig: globals: main_color: '%main_color%'
以上が基本的な使い方になります。
グローバル変数を固定ではなく、可変させたいときは?
グローバル変数に、サービスを設定することで値をコントロールすることが可能です。
簡単なサンプルです。
// ColorDefine.php ... class ColorDefine { public function getColor($main) { $color = $main; return $color; } } # app/config/config.yml twig: globals: # To define a service as a global Twig variable, prefix the string with @. main_color: '@AppBundle\Service\ColorDefine' # twig {{ dump(main_color.getColor('green')) }} result green
上記のようにTwig上でサービスを呼び出すことが可能になります。
引数も渡すことができるので、拡張性はとても高いと思います。ただし、globalに設定しているので、Twig上で使用していなくてもServiceが読み込まれた状態になってしまうという注意点があります。
以上Twigへのglobal変数の渡し方のまとめでした。
Symfonyおすすめ書籍
あまり種類がないのと、そもそもフレームワークとして情報が膨大なので、入門でも結構読み応えがあります。
「PHPフレームワーク Symfony 4入門」
Twigおすすめの書籍
Twigだけに特化した書籍は読んだことがないのですが、AmazonのKindleにありました。
これと同じくらいブログでまとめられたらと思います。