配置.yml 中的变量



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

最新更新