179

Symfony2Twigテンプレートがあります。この小枝テンプレートの構成パラメーターの値(バージョン番号)を出力したいと思います。したがって、configパラメーターを次のように定義しました。

parameters:
    app.version: 0.1.0

この構成パラメーターをコントローラーで使用することはできますが、Twigテンプレートで取得する方法がわかりません。

4

8 に答える 8

417

構成のtwigグローバルセクションでパラメーター置換を使用できます。

パラメータ設定:

parameters:
    app.version: 0.1.0

Twig構成:

twig:
    globals:
        version: '%app.version%'

小枝テンプレート:

{{ version }}

ContainerAwareこのメソッドには、以下を使用して、クラスでもパラメーターを使用できるという利点があります。

$container->getParameter('app.version');
于 2011-12-02T17:20:25.827 に答える
191

簡単に、設定ファイルで次のように定義できます。

twig:
    globals:
        version: "0.1.0"

そして、テンプレートでそれにアクセスします

{{ version }}

それ以外の場合は、Twig拡張機能を使用してパラメーターを公開する方法である必要があります。

于 2011-07-22T19:40:07.390 に答える
90

組み込みのサービスパラメータシステムを利用することもできます。これにより、値を分離または再利用できます。

# 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つとして返す必要があります。

于 2012-03-28T13:58:29.190 に答える
19

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の変数であり、将来そこに何が格納されるかわからないからです。

于 2013-05-05T15:32:51.607 に答える
16

上記の回答は正しく、正常に機能します。私は別の方法で使用しました。

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 }}

理解を深めるために、別の方法について説明しました。

于 2013-07-14T16:59:10.370 に答える
13

parameterTwig拡張機能を使用すると、 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 }
于 2016-08-04T17:00:25.947 に答える
1

$this->getParameter('app.version')コントローラを小枝パラメータにバインドしてからレンダリングするだけです。

于 2016-05-07T11:29:54.180 に答える
-1

confing.ymlで

# app/config/config.yml
twig:
  globals:
    version: '%app.version%'

Twigビューで

# twig view
{{ version }}
于 2017-04-21T07:46:50.830 に答える