Конфигурация Symfony4 - как создать собственное пространство имен конфигурации

Я пытаюсь сделать некоторые процессы конфигурации в 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() метод Kernel

Можно ли создать собственное пространство имен внутри приложения (не в комплекте)? если да как это сделать? И если нет, то почему?

0 ответов

Другие вопросы по тегам