【问题标题】:Is it possible to use the same TreeBuilder root for multiple bundles是否可以对多个捆绑使用相同的 TreeBuilder 根
【发布时间】:2017-10-09 04:44:32
【问题描述】:

我想知道如何使用相同的 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 密钥。

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

【问题讨论】:

    标签: php symfony configuration


    【解决方案1】:

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

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

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

    【讨论】:

      猜你喜欢
      • 2023-03-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-04-19
      • 1970-01-01
      相关资源
      最近更新 更多