Symfony2Twigテンプレートがあります。この小枝テンプレートの構成パラメーターの値(バージョン番号)を出力したいと思います。したがって、configパラメーターを次のように定義しました。
parameters:
app.version: 0.1.0
この構成パラメーターをコントローラーで使用することはできますが、Twigテンプレートで取得する方法がわかりません。
Symfony2Twigテンプレートがあります。この小枝テンプレートの構成パラメーターの値(バージョン番号)を出力したいと思います。したがって、configパラメーターを次のように定義しました。
parameters:
app.version: 0.1.0
この構成パラメーターをコントローラーで使用することはできますが、Twigテンプレートで取得する方法がわかりません。
構成のtwigグローバルセクションでパラメーター置換を使用できます。
パラメータ設定:
parameters:
app.version: 0.1.0
Twig構成:
twig:
globals:
version: '%app.version%'
小枝テンプレート:
{{ version }}
ContainerAware
このメソッドには、以下を使用して、クラスでもパラメーターを使用できるという利点があります。
$container->getParameter('app.version');
簡単に、設定ファイルで次のように定義できます。
twig:
globals:
version: "0.1.0"
そして、テンプレートでそれにアクセスします
{{ version }}
それ以外の場合は、Twig拡張機能を使用してパラメーターを公開する方法である必要があります。
組み込みのサービスパラメータシステムを利用することもできます。これにより、値を分離または再利用できます。
# app/config/parameters.yml
parameters:
ga_tracking: UA-xxxxx-x
# app/config/config.yml
twig:
globals:
ga_tracking: "%ga_tracking%"
現在、変数ga_trackingはすべてのTwigテンプレートで使用できます。
<p>The google tracking code is: {{ ga_tracking }}</p>
このパラメーターは、コントローラー内でも使用できます。
$this->container->getParameter('ga_tracking');
サービスをグローバルTwig変数(Symfony2.2 +)として定義することもできます。
# app/config/config.yml
twig:
# ...
globals:
user_management: "@acme_user.user_management"
http://symfony.com/doc/current/templating/global_variables.html
設定するグローバル変数がより複雑な場合(オブジェクトなど)、上記のメソッドを使用することはできません。代わりに、Twig拡張機能を作成し、グローバル変数をgetGlobalsメソッドのエントリの1つとして返す必要があります。
Symfony2の新しいバージョン(のparameters.yml
代わりにを使用parameters.ini
)では、キーと値のペアの代わりにオブジェクトまたは配列を格納できるため、グローバルを次のように管理できます。
config.yml(1回だけ編集):
# app/config/config.yml
twig:
globals:
project: %project%
parameters.yml:
# app/config/parameters.yml
project:
name: myproject.com
version: 1.1.42
そして、小枝ファイルでは、{{ project.version }}
またはを使用できます{{ project.name }}
。
注:私は個人的にに何かを追加するのが嫌いapp
です。なぜなら、それがSymfonyの変数であり、将来そこに何が格納されるかわからないからです。
上記の回答は正しく、正常に機能します。私は別の方法で使用しました。
config.yml
imports:
- { resource: parameters.yml }
- { resource: security.yml }
- { resource: app.yml }
- { resource: app_twig.yml }
app.yml
parameters:
app.version: 1.0.1
app_twig.yml
twig:
globals:
version: %app.version%
コントローラー内部:
$application_version = $this->container->getParameter('app.version');
// Here using app.yml
テンプレート/小枝ファイル内:
Project version {{ version }}!
{# Here using app_twig.yml content. #}
{# Because in controller we used $application_version #}
コントローラ:
public function indexAction() {
$application_version = $this->container->getParameter('app.version');
return array('app_version' => $application_version);
}
テンプレート/小枝ファイル:
Project version {{ app_version }}
理解を深めるために、別の方法について説明しました。
parameter
Twig拡張機能を使用すると、 Twig関数を作成できます。
{{ parameter('jira_host') }}
TwigExtension.php:
class TwigExtension extends \Twig_Extension
{
public $container;
public function getFunctions()
{
return [
new \Twig_SimpleFunction('parameter', function($name)
{
return $this->container->getParameter($name);
})
];
}
/**
* Returns the name of the extension.
*
* @return string The extension name
*/
public function getName()
{
return 'iz';
}
}
service.yml:
iz.twig.extension:
class: IzBundle\Services\TwigExtension
properties:
container: "@service_container"
tags:
- { name: twig.extension }
$this->getParameter('app.version')
コントローラを小枝パラメータにバインドしてからレンダリングするだけです。
confing.ymlで
# app/config/config.yml
twig:
globals:
version: '%app.version%'
Twigビューで
# twig view
{{ version }}