В настоящее время я работаю над проектом с пакетом, который мне нужно использовать в различных проектах.
Моя проблема: в моем сервисе никогда не загружается конфигурация.
Моя конфигурация выглядит примерно так, где-то в моем файле config.yml:
my_bundle:
my_config:
key1: value1
key2: value2
key3: value3
В файле расширения я загружаю его в свой сервис:
public function load(array $configs, ContainerBuilder $container)
{
$configuration = new Configuration();
$config = $this->processConfiguration($configuration, $configs);
$loader = new Loader\YamlFileLoader($container, new FileLocator(__DIR__.'/../Resources/config'));
$loader->load('services.yml');
$myService = $container->getDefinition(\MyBundle\Service\MyService::class);
$myService->setArgument('$myConfig', $config['my_config']);
}
Я уже пытался установить пустой массив в качестве значения по умолчанию и использовать вместо него метод replaceArgument, но ничего лучше.
Файл скомпилированного контейнера выглядит так:
<?php
// Filename : getMyServiceService.php
use Symfony\Component\DependencyInjection\Argument\RewindableGenerator;
return $this->services['MyBundle\Service\MyService'] = new \MyBundle\Service\MyService(
${($_ = isset($this->services['doctrine.orm.default_entity_manager']) ? $this->services['doctrine.orm.default_entity_manager'] : $this->load('getDoctrine_Orm_DefaultEntityManagerService.php')) && false ?: '_'},
$this
);
В то время как файл services.yml моего пакета, загруженный в файл конфигурации, выглядит следующим образом:
services:
_defaults:
public: false
MyBundle\Service\MyService:
autowire: false
autoconfigure: false
arguments:
$em: '@doctrine.orm.default_entity_manager'
$container: '@service_container'
При добавлении аргумента $ myConfig и использовании «replaceArgument» в файле расширения служба загружается, но никогда не загружаются ожидаемые значения конфигурации.
Не знаю, изменился ли способ загрузки конфигурации в 3.x, но я не нашел ничего, указывающего, что я делаю это неправильно.
Спасибо за любой ответ.