将项添加到Symfony2参数数组

时间:2016-01-04 09:09:23

标签: php arrays symfony parameters yaml

我有一个由许多软件包组成的Symfony2(2.8.1)应用程序。 我想要一个关于'关于'显示每个捆绑包的版本的页面。 为此,我尝试使用这样的参数数组:

revision:
  'bundle1':
    version: 1.0.0
    build: 42
  'bundle2':
    version: 1.2.0
    build: 4242

等等。 如果我将所有内容都放在一个YAML文件中就可以了。 相反,我希望每个包定义其修订版。就像是: bundle1的参数文件:

revision:
  'bundle1':
    version: 1.0.0
    build: 42

和bundle2的参数文件:

revision:
  'bundle2':
    version: 1.2.0
    build: 4242

如果我这样做,修订版数组仅填充最后包含的yaml文件的值。 有没有办法添加'在不同的yaml文件中定义的参数数组的条目? BR   斯特凡诺

1 个答案:

答案 0 :(得分:0)

我改变了方法并解决了问题。 我只是在每个包的config文件夹中创建一个Yaml文件,而不是将修订信息添加到配置中。 然后我将yaml文件内容加载到一个数组中,以便在about页面中使用。

代码类似于:

    # first place to check is app config folder
    $kernel_root=$this->get('kernel')->getRootDir();
    $toLocate[]=$kernel_root.'/config';

    # then get config folder for each active bundle
    $kernel = $this->get('kernel');
    $configDirectories=$this->getParameter('kernel.bundles');
    foreach ($configDirectories as $bundleName => $configDirectory) {
        $toLocate[]= $kernel->locateResource('@'.$bundleName).'Resources/config';
    }

    # now get array of revision files
    $locator = new FileLocator($toLocate);
    $yamlRevFiles = $locator->locate('revision.yml', null, false);

    # and finally create array of date read from revision files
    $revs=array();
    foreach ($yamlRevFiles as $yamlRevFile) {
        $revs[]=Yaml::parse($yamlRevFile);
    }