Symfony4配置-如何创建自定义配置名称空间

时间:2019-01-07 01:19:40

标签: configuration symfony4 symfony-config-component

我想在Extension中执行一些配置过程,并且某些事情我必须访问我的配置。

这是我的配置文件

my_app:
  db_driver: "%env(DB_DRIVER)%"

我的配置类

class Configuration implements ConfigurationInterface
{
    /**
     * @return TreeBuilder
     */
    public function getConfigTreeBuilder()
    {
        $treeBuilder = new TreeBuilder();
        $rootNode = $treeBuilder->root('my_app');
        //the '%env(DB_DRIVER)%' is temporary... maybe
        $supportedDrivers = array('orm', 'mongodb', '%env(DB_DRIVER)%');
        $rootNode
            ->children()
                ->scalarNode('db_driver')
                    ->validate()
                        ->ifNotInArray($supportedDrivers)
                        ->thenInvalid('The driver %s is not supported. Please choose one of '.json_encode($supportedDrivers))
                        ->end()
                    ->cannotBeOverwritten()
                    ->isRequired()
                    ->cannotBeEmpty()
                ->end()
            ->end();

        return $treeBuilder;
    }
}

我的扩展程序类

class DoctrineExtension extends Extension
{
        public function load(array $configs, ContainerBuilder $container)
    {
        $processor = new Processor();
        $configuration = new Configuration();

        $config = $processor->processConfiguration($configuration, $configs);
        dump($config);exit;
        ...
    }
}

我以为我可以访问我的my_app配置参数,但收到此错误消息

  

没有扩展程序能够加载“ my_app”的配置,然后加载可用的config namespaces列表。

我的扩展程序已在configureContainer()的{​​{1}}方法中注册

是否可以在应用程序(不是捆绑包)内创建自定义名称空间?如果是,该怎么办?如果不是...为什么不呢?

0 个答案:

没有答案
相关问题