У меня есть приложение Symfony2 (2.8.1) из многих пакетов. Я хотел бы иметь страницу "about", показывающую версию каждого пакета. Для этого я пытаюсь использовать массив параметров следующим образом:
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 Стефано
Я изменил подход и решил проблему. Вместо добавления информации о ревизии в конфигурацию я просто создаю файл 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);
}