Я пытаюсь создать пользовательский файл конфигурации за пределами config/packages
, так как мне нужен этот файл для записи.Я понимаю, что Symfony 4 не определяет AppBundle, как предыдущие версии.Я видел похожие проблемы с решениями, которые не работают для моего конкретного случая.
До сих пор я создал следующие файлы:
# config/settings.yaml
settings:
foo: 3
<?php
namespace App\DependencyInjection;
use Symfony\Component\Config\Definition\Builder\TreeBuilder;
use Symfony\Component\Config\Definition\ConfigurationInterface;
class Configuration implements ConfigurationInterface
{
public function getConfigTreeBuilder()
{
$tree_builder = new TreeBuilder();
$root_node = $tree_builder->root('settings');
$root_node
->addDefaultsIfNotSet()
->children()
->scalarNode('foo')
->defaultValue(1)
->end()
->end()
;
return $tree_builder;
}
}
<?php
namespace App\DependencyInjection;
use Symfony\Component\Config\FileLocator;
use Symfony\Component\DependencyInjection\ContainerBuilder;
use Symfony\Component\DependencyInjection\Loader;
use Symfony\Component\HttpKernel\DependencyInjection\Extension;
class SettingsExtension extends Extension
{
public function load(array $configs, ContainerBuilder $container)
{
$configuration = new Configuration();
$config = $this->processConfiguration($configuration, $configs);
$loader = new Loader\YamlFileLoader($container, new FileLocator(__DIR__.'/../../config'));
$loader->load('settings.yaml');
$container->setParameter('settings.foo', $config['foo']);
}
}
И я 'мы загрузили расширение в Kernel.php
как:
protected function configureContainer(ContainerBuilder $container, LoaderInterface $loader)
{
$container->registerExtension(new SettingsExtension());
$container->loadFromExtension('settings');
...
}
Но если получим следующую ошибку:
There is no extension able to load the configuration for "settings" (in src/DependencyInjection/../../config/settings.yaml). Looked for namespace "settings", found none