是Symfony2控制器内可用的Twig模板的全局变量吗?

时间:2012-06-14 13:03:31

标签: symfony global-variables twig

可以在 Symfony2 应用程序的 config.yml 内定义 Twig模板全局变量如下所示:

twig:                 
    globals:
      var_name: var_value

因此,在每个Twig模板中,变量可以按如下方式使用:

{{var_name}}

将显示

var_value

您是否知道在Symfony2控制器中获取全局变量值的方法?

4 个答案:

答案 0 :(得分:23)

似乎并不是一种获取特定价值的方法。但你可以从树枝服务中获得全部的全局变量,然后抓住它的偏移量。

$twig = $this->container->get('twig');
$globals = $twig->getGlobals();
echo $globals['var_name'];

答案 1 :(得分:4)

正确的做法是遵循Symfony's Cookbook中关于Twig全局变量的官方教程。实际上,应该定义一个可以在控制器中使用的全局变量,例如:

  ; app/config/parameters.ini
  [parameters]
     my_global_var: HiAll

然后将变量定义为Twig模板的全局

# app/config/config.yml
twig:
    globals:
        my_var: %my_global_var%

因此,{{my_var}}将返回 HiAll ,但是应该在parameters.ini文件中处理一次值。

所以,问题的答案是否定的!或者说,不是以有效的方式。 MDrollette绘制了一种可能的方式!

答案 2 :(得分:2)

我不清楚您是否想要访问控制器中的twig var,或者只是从配置中访问全局变量。以下是如何从配置文件中访问全局变量...

您可以将值放在配置的参数部分中。

parameters:
    var_name: some_value

现在您可以从控制器访问它了......

$value = $this->container->getParameter('var_name');

答案 3 :(得分:2)

我认为你最好为你的值使用bundle配置或DIC参数,然后将它添加到twig globals(例如,通过你的bundle扩展类),而不是试图做相反的事情。