twigファイルにグローバル変数を設定して、他のファイル、マクロ、ブロックからその変数にアクセスできるようにすることは可能ですか?.
たとえば、variables.twig
ファイルとその中に変数を設定し、他のテンプレートに含めることができます。
グローバル変数の設定がフレームワーク(Symfonyなど)から可能であることは知っていますが、twig機能のみを使用した解決策が必要です。
Symfony2を使用している場合は、config.yml
ファイルでグローバルを設定できます。
# app/config/config.yml
twig:
# ...
globals:
myStuff: %someParam%
次に、アプリケーションの任意の場所で{{ myStuff }}
を使用します。
別のプロジェクトでTwigを使用している場合は、環境に直接グローバルを設定できます。
$twig = new Twig_Environment($loader);
$twig->addGlobal('myStuff', $someVariable);
次に、アプリケーションの任意の場所で{{ myStuff }}
を使用します。
多数のグローバル変数があり、アプリケーションの特定の部分にのみ一連のグローバルを指定する場合は、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コードの一部を含める場合、コード自体ではなく、そのコードからのレンダリングされたビューのみを含めます。したがって、設計上、変数はあなたが探している方法です。