在服务中加载配置

时间:2018-08-27 16:23:03

标签: symfony-3.4

我目前正在处理一个捆绑项目,我需要能够在各种项目中使用它。

我的问题是:配置从未加载到我的服务中。

我的配置看起来像这样,位于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中加载配置的方式是否发生了变化,但是我什么也没发现,表明我做错了方法。

感谢您的回答。

0 个答案:

没有答案