如果我在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"。
我该怎么做?
依赖注入在Symfony中是一个很长的主题,有很多关于细节的文档,所以我在这里给你介绍一下。
参数 .yml 文件应包含平面键/值对。配置文件应该从中读取,参数可以包含数组,但是你不能像这样引用Symfony中的subs。
相反,您可以为配置节点提供整个参数数组。 这将带您:http://symfony.com/doc/current/components/config/definition.html
下一步是更改捆绑包的扩展类中的服务容器。http://symfony.com/doc/current/components/dependency_injection/compilation.html#managing-configuration-with-extensions
从包含 yml 参数的配置节点读取,并创建容器参数的超集。
例如:
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');
但请注意,捆绑包不应该真正依赖于 parameters.yml 值的存在,因为如果该参数不存在,上述语句将抛出错误,除非您先调用 hasParameter
。