config.yml中的变量

时间:2013-10-03 08:31:17

标签: php symfony twig yaml

如果我在Symfony2 /app/config/config.yml中使用:

parameters:
    test_first: aaaa
    test_second: bbbb

twig:
    globals:
        first: %test_first%

然后这个工作正常

但我想做:

parameters:
    test:
        first: aaaa
        second: bbbb

twig:
    globals:
        first: %test_first%

我有错误:

  

ParameterNotFoundException:您已请求不存在   参数“test_first”。

我该怎么做?

1 个答案:

答案 0 :(得分:2)

依赖注入是Symfony中的一个冗长的主题,并且有大量关于细节的文档,所以我只是告诉你这里的运行。

parameters.yml文件应包含平键/值对。 配置文件应该从它们读取,参数可能包含数组,但是你不能像这样引用Symfony中的subs。

相反,您可以为配置节点提供整个参数数组。这会带你到: http://symfony.com/doc/current/components/config/definition.html

下一步是更改捆绑包的Extension类中的Service Container。 http://symfony.com/doc/current/components/dependency_injection/compilation.html#managing-configuration-with-extensions

从包含yml参数的config节点读取并创建容器参数的超集。

例如:

foreach($config['test'] as $key => $value) {
    $container->setParameter($this->getAlias().'.test.'.$key, $value);
}

这将创建一个参数部分,例如:

myapp.test.first  = aaaa
myapp.test.second = bbbb

从控制器访问:

$value = $this->container->getParameter('myapp.test.first');

请注意,bundle不应该真正依赖于parameters.yml值的存在,因为如果该参数不存在,除非先调用hasParameter,否则上述语句将抛出错误。