FORSMILE
EN
Symfony2021/08/11

SymfonyでTwigにグローバル変数を設定する方法[Twig,Symfony]

Symfonyを使ってTwigに対してグローバル変数を設定する方法です。

ブログ一覧へ / Back to Blog

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で探す →(アソシエイトリンク)