Symfony2捆绑特定的Twig配置/变量

时间:2013-03-21 06:34:08

标签: symfony

我知道我可以在app/config/config.yml中设置Twig变量,但是我想在每个捆绑级别设置变量(例如:Bundle/Resources/config/??.yml)。

例如,我想在我的页面的页脚中包含一个包版本标识符。我尝试将twig配置放入我的捆绑包'services.yml但是Symfony无法解析配置。

我怎样才能做到这一点?

1 个答案:

答案 0 :(得分:1)

我不确定如何为您的示例实现特定于bundle的配置。捆绑包中的配置往往会导入到主配置文件中,这些配置文件现在是特定于环境的,而不是特定于捆绑包的。

但是,对于您的示例,我只会制作一个twig扩展名,它会返回您正在使用的包的名称。这样您就可以在模板中的任何位置使用它。您可以从请求中获取控制器的完全命名路径,然后只需使用preg匹配来获取Bundle名称。像下面这样的东西应该有效:

public function getBundleName()
{
    $pattern = "#([a-zA-Z]*)Bundle#";
    $matches = array();
    preg_match($pattern, $this->container->get('request')->get('_controller'), $matches);
    return $matches[1];
}

在此示例中,$this->container已在构造函数中设置为容器的实例。如果您使用其他方法获取控制器,则相应地替换。