

config.ymlのparametersに設定した値をcontrollerで取得するには$this->container->getParameter()で取得できるのはわかっているのですが、テンプレートで直接取得することはできないのでしょうか？

symfony.1系だと、sfConfig::get('sf_category')などで取得できたと思うのですが、似たようなことができれば方法を教えてください。


CC BY-SA 3.0
2016-02-02T05:14:10.963
21610
2016-09-26T20:08:33.813
14234
question
php symfony2
symfony2でconfig.ymlなどの設定をテンプレートで取得する方法


テンプレート(Twig)でparameter等を取得したい場合、自分でtwigのglobal変数に登録する必要があります。

英語ですが、この辺りが参考になります。  
<http://symfony.com/doc/current/cookbook/templating/global_variables.html>

もしくは自作のTwigExtensionを作成し  
<http://docs.symfony.gr.jp/symfony2/cookbook/templating/twig_extension.html>

getGlobals()メソッドを実装するという方法もあります。  
<http://twig.sensiolabs.org/doc/advanced.html#id1>

parameter系に関して一つ一つ設定するのが面倒ということであれば、以下のように実装するといいと思います。

ex.)  
services.yml

[code]

    services:
        app.twig_extension:
            class: AppBundle\Twig\AppExtension
            public: false
            arguments:
                - "@=service('service_container').parameters().all()"
            tags:
                - { name: twig.extension }
    
[/code]

twig extension作成

[code]

    class AppExtension extends \Twig_Extension
    {
        private $params;
        public function __construct(array $params)
        {
            $this->params = $params;
        }
        public function getGlobals()
        {
            return ['params' => $this->params];
        }
    }
    
[/code]

twigでの利用方法

[code]

    {{ params.myParam }}
    
[/code]


CC BY-SA 3.0
2016-02-08T02:44:08.320
21829
2016-02-08T02:44:08.320
5925
21610
answer