我正在构建我的第一个symfony捆绑包,由于某种原因,我无法进行配置。
配置.php
..........
$loader = new Loader'YamlFileLoader($container, new FileLocator(__DIR__.'/../Resources/config'));
$loader->load('services.yml');
$loader->load('custom.yml');
..........
custom.yml
bd_config:
version: 2
ConfigExtension.php
$rootNode = $treeBuilder->root('bd_config');
$rootNode->
children()
->integerNode('version')->end()
->end();
return $treeBuilder;
我得到这个错误
没有扩展能够加载"bd_config"的配置(在/Library/WebServer/symfony/src/bd/ConfigBundle/DependencyInjection/../Resources/config/custom.yml中)。查找命名空间"bd_connfig",未找到
我做错了什么?
有一个关于使用bundle配置的命名约定。您的配置根必须采用以下格式:
vendor_bundle
其中,如果您的捆绑包名称是驼色大小写的,并且由多个单词组成(除了捆绑包和供应商名称),则它包含更多的_符号。例如:CompanySuperSymfonyBundle
将是company_super_symfony
。
之后,您可以设置您的配置:
company_super_symfony:
version: 100
树生成器:
$rootNode->
children()
->integerNode('version')->end()
->end();
您不必使用Loader加载任何内容,但必须将您的配置添加为容器参数:
$container->setParameter('version', $config['version']);
然后,在你的控制器中:
... = $this->container->getParameter('version');
首先,你做错了:)。
- yml无效(缩进1个空格)
Configuration.php
应该构建树(而不是扩展)*Extension.php
加载资源(而不是树)
也许这样可以,但我不知道BDConfigBundle
是否是yml中的b_d_config
。我会使用BdConfig
作为bundlename,bd_config
作为yml根。
然后我会在config.yml
:中导入你的yml
配置yml
imports:
- { resource: custom.yml }
BdConfigStoreExtension.php
class BdConfigStoreExtension extends Extension
{
public function load(array $configs, ContainerBuilder $container)
{
$configuration = new Configuration();
$bdConfigNode = $this->processConfiguration($configuration, $configs);
// ...
}
}
希望这能有所帮助;)。