Symfonyを使ってTwigに対してグローバル変数を設定する方法です。
マニュアルを見る限り、ほかのバージョンでも動作可能だと思います。
configファイルでグローバル変数を設定する。
基本的には、下記のようにコンフィグに追加するだけで設定可能です。
css
# app/config/config.yml
twig:
globals:
main_color: 'red'
...
# sample twig
{{ dump(main_color) }}
// result redとてもシンプルです。もちろんサービスコンテナ内のパラメータを使用することも可能です。
text
# Using Service Container Parameters
# app/config/parameters.yml
parameters:
main_color: 'red'
# app/config/config.yml
twig:
globals:
main_color: '%main_color%'グローバル変数を固定ではなく、可変させたいときは?
グローバル変数に、サービスを設定することで値をコントロールすることが可能です。
javascript
// 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が読み込まれた状態になってしまうという注意点があります。
Symfonyおすすめ書籍
あまり種類がないのと、そもそもフレームワークとして情報が膨大なので、入門でも結構読み応えがあります。
Twigおすすめの書籍
Twigだけに特化した書籍は読んだことがないのですが、AmazonのKindleにありました。
📦Amazon で関連書籍・ツールを検索
Symfony PHP フレームワーク
Amazonで探す →(アソシエイトリンク)
