0

如果我在 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”。

我怎样才能做到?

4

1 回答 1

2

依赖注入在 Symfony 中是一个冗长的主题,并且有大量关于细节的文档,所以我将在这里简单介绍一下。

parameters.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');

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

于 2013-10-03T09:47:02.550 回答