Symfony2:addMethodCall在Extension中不起作用

时间:2016-03-05 13:41:50

标签: symfony service

我一定错过了什么。我有一个" ConfigBundle"在其中我有这个services.yml(在Acme / ConfigBundle / Resources / config中):

services:
    config.manager:
        class: Acme\ConfigBundle\Manager\ConfigManager
        arguments: ["@doctrine.orm.entity_manager", "@config.storage"]

此服务按预期工作。

接下来我有一个Configuration.php:

class Configuration implements ConfigurationInterface
{
    /**
     * {@inheritdoc}
     */
    public function getConfigTreeBuilder()
    {
        $treeBuilder = new TreeBuilder();
        $rootNode = $treeBuilder->root('config');

        $rootNode
            ->children()
                ->scalarNode('storage')->isRequired()->cannotBeEmpty()->end()
                ->variableNode('defaults')->end()
            ->end();
        ;

        return $treeBuilder;
    }
}

哪个也按预期工作。最后我有ConfigExtensions.php:

class ConfigExtension extends ConfigurableExtension
{
    /**
     * {@inheritdoc}
     */
    protected function loadInternal(array $mergedConfig, ContainerBuilder $container)
    {
        // Set storage service.
        $container->setAlias('config.storage', $mergedConfig['storage']);

        if (!empty($mergedConfig['defaults'])) {
            $loader = new YamlFileLoader($container, new FileLocator(__DIR__.'/../Resources/config'));
            $loader->load('services.yml');
            //$container->getDefinition('config.manager')->addArgument('test');
            $container->getDefinition('config.manager')->addMethodCall('setDefaults', [$mergedConfig['defaults']]);
            var_dump('It is being invoked!');

        }
    }

}

由于方法addMethodCall无法正常工作,因此无法正常工作。 addMethodCall执行,我检查了这个,但调用永远不会被调用,并且在缓存中的appDevDebugProjectContainer.xml中不可见。当我添加:

    calls:
        - [setDefaults, ['test']]

对于services.yml中的服务定义,它会被调用,但我无法通过在Extension中使用addMethodCall来实现它。我没有收到任何错误,在尝试解决这个问题时,我不止一次清除了缓存目录。任何想法,为什么这不起作用?

0 个答案:

没有答案