是否可以为多个包使用相同的TreeBuilder根

时间:2017-10-09 04:44:32

标签: php symfony configuration

我想知道如何使用相同的TreeBuilder别名获得2个包。

就我而言,我有下一个配置:

harmony:
  site_name: 'Site name'
  theme: 'default'

我希望捆绑包定义site_name,其他捆绑包定义theme参数。

实际上,要实现这一点,我创建了2个配置类。

第一个包含:

$treeBuilder = new TreeBuilder();
    $rootNode    = $treeBuilder->root('harmony');

    $rootNode
        ->children()
            ->scalarNode('site_name')
                ->isRequired()
                ->info('The name displayed as the title of the site (e.g. company name, project name).')
            ->end()
        ->end()
    ;

第二个:

$treeBuilder = new TreeBuilder();
    $rootNode    = $treeBuilder->root('harmony');

    $rootNode
        ->children()
            ->scalarNode('theme')
                ->isRequired()
                ->cannotBeEmpty()
                ->defaultValue('default')
                ->info('The theme used to render the frontend pages.')
            ->end()
        ->end()
    ;

但是我收到了下一条异常消息:

  

“和谐”下无法识别的选项“主题”

我假设我的第一个包正在检查额外的密钥,并找到了第二个包中定义的theme密钥。

有没有办法实现我想做的事情?

1 个答案:

答案 0 :(得分:0)

您可以尝试通过覆盖第二个包扩展类中的父方法来使用别名包:return' harmony'。

参见文档,它解释了DI如何检查捆绑配置:

http://symfony.com/doc/current/bundles/extension.html#manually-registering-an-extension-class