2016-01-04 3 views
1

У меня есть приложение Symfony2 (2.8.1) из многих пакетов. Я хотел бы иметь страницу «about», показывающую версию каждого пакета. Для этого я пытаюсь использовать массив параметров, как это:Добавление элементов в массив параметров Symfony2

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 Stefano

ответ

0

Я изменил подход и решил проблему. Вместо добавления информации о ревизии в конфигурацию я просто создаю файл Yaml в папке config каждого пакета. Затем я загружаю содержимое 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); 
    } 
Смежные вопросы