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

Я пытаюсь выполнить некоторые процессы конфигурации в Extension, а для некоторых вещей мне нужно получить доступ к моей конфигурации.

Вот мой конфигурационный файл

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

My Config Class

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...