6

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

twig:                 
    globals:
      var_name: var_value

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

{{var_name}}

这将显示

var_value

你知道在 Symfony2 控制器中获取全局变量值的方法吗?

4

4 回答 4

23

似乎没有办法获取特定值。但是您可以从 twig 服务中获取完整的全局变量数组,然后获取它的偏移量。

$twig = $this->container->get('twig');
$globals = $twig->getGlobals();
echo $globals['var_name'];
于 2012-06-14T16:59:02.947 回答
4

正确的做法是遵循Symfony 的 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 画了一个可能的方法!

于 2012-09-16T14:08:02.570 回答
2

我认为您最好使用捆绑配置或 DIC 参数作为您的值,然后将其添加到 twig 全局变量中(例如,通过您的捆绑扩展类),而不是试图做相反的事情。

于 2012-06-15T15:53:41.057 回答
2

我不清楚您是想访问控制器中的 twig var,还是只从配置中访问全局 var。这是从配置文件访问全局变量的方法...

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

parameters:
    var_name: some_value

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

$value = $this->container->getParameter('var_name');
于 2012-06-14T13:07:31.137 回答