/ / symfony2を使ってTwigでグローバル変数を設定する方法 - symfony

symfony2を使ってTwigでグローバル変数を設定する方法 - symfony

symfony 2.8とtwig 1を使っています。2、私は小枝のテンプレート用のグローバル変数を設定する方法があるかどうか疑問に思っていた、私は変数の値を設定して使用することができる中心的な場所があれば、私はそれぞれの小枝ファイルに入り、値を変更するのは嫌いだろうそれがあるディレクトリに関係なく、小枝ファイルのどれでもそれはすばらしいでしょう。

今のところ私は ""でキー値を定義しています paramaters.yml ファイル

parameters:
client_name: "naruto uzumaki"

それから私は持っているコントローラの内側に

<?php
use SymfonyBundleFrameworkBundleControllerController;

class MyController extends Controller
{
public function editAction()
{
$var = $this->container->getParameter("client_name");
return $this->render("UserBundle:edit:edit.html.twig", array("var" => $var));
}
}

それから小枝の中にそれを表示する、

<h1>Hello, {{ var }}</h1>

私はしたいと思います 避ける コントローラのサービスコンテナを呼び出して直接アクセスする client_name 小枝ファイルの値は、任意の助けがいただければ幸いです

-Dheeraj

回答:

回答№1は4

はい、できます、あなたの設定ファイルで。

# app/config/config.yml
twig:
globals:
my_global_variable: "%client_name%"

それから小枝で:

{{ my_global_variable }}

グーグルで解決策を探すのを怖がってはいけません。 "twig global variable"の最初の結果は次のとおりです。

http://symfony.com/doc/current/cookbook/templating/global_variables.html


回答№2の場合は3

config.ymlの中でこれを試してください:

twig:
# ...
globals:
global_var: %client_name%"

そしてあなたの小枝の中で、あなたはそれに簡単にアクセスすることができます:

<p>{{ global_var }}</p>

また、参照サービスを試すことができます。資料を参照してください。 http://symfony.com/doc/2.8/cookbook/templating/global_variables.html#referencing-services


回答№3の場合は0

Twigがスタンドアロンで使用されている場合(つまり、残りのプロジェクトがSymfony上に構築されていない場合)の答えを追加します。

延長サンプル

class CustomTwigExtension extends Twig_Extension implements Twig_Extension_GlobalsInterface
{
private $globals;

public function __construct(array $globals) {
$this->globals = $globals;
}

public function getGlobals() {
return $this->globals;
}
}

小枝の設定:

// where twig is created
$loader = new Twig_Loader_Filesystem("/path/to/templates"); // or whatever loader you would use
$globals = ["global_var" => "whatever"];
$globalsExtension = new CustomTwigExtension($globals);
$twig = new Twig_Environment($loader);
$twig->addExtension($globalsExtension);

テンプレート内:

<div>{{ global_var }}</div>

への参照 トピックに関する小枝ドキュメント