如果我在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”。
我该怎么做?
答案 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
,否则上述语句将抛出错误。