web-dev-qa-db-ja.com

twigテンプレートファイル内でグローバル変数を定義するにはどうすればよいですか?

twigファイルにグローバル変数を設定して、他のファイル、マクロ、ブロックからその変数にアクセスできるようにすることは可能ですか?.

たとえば、variables.twigファイルとその中に変数を設定し、他のテンプレートに含めることができます。

グローバル変数の設定がフレームワーク(Symfonyなど)から可能であることは知っていますが、twig機能のみを使用した解決策が必要です。

14
Amir Ajoudanian

Symfony2設定の使用

Symfony2を使用している場合は、config.ymlファイルでグローバルを設定できます。

# app/config/config.yml
twig:
    # ...
    globals:
        myStuff: %someParam%

次に、アプリケーションの任意の場所で{{ myStuff }}を使用します。


Twig_Environment :: addGlobalを使用する

別のプロジェクトでTwigを使用している場合は、環境に直接グローバルを設定できます。

$twig = new Twig_Environment($loader);
$twig->addGlobal('myStuff', $someVariable);

次に、アプリケーションの任意の場所で{{ myStuff }}を使用します。


Twig拡張子を使用する

多数のグローバル変数があり、アプリケーションの特定の部分にのみ一連のグローバルを指定する場合は、Twig拡張を作成できます。

class Some_Twig_Extension extends Twig_Extension implements Twig_Extension_GlobalsInterface
{
    public function getGlobals()
    {
        return array(
            'someStuff' => $this->myVar,
            // ...
        );
    }

    // ...
}

次に、必要な場合にのみ環境にインポートします。

$twig = new Twig_Environment($loader);
$twig->addExtension(new Project_Twig_Extension());

また、アプリケーションのどこでも{{ myStuff }}を使用します。

Twigテンプレートを使用する

Twigコードの一部を含める場合、コード自体ではなく、そのコードからのレンダリングされたビューのみを含めます。したがって、設計上、変数はあなたが探している方法です。

28
Alain Tiemblo