我无法解决这个问题。
我正在Symfony2中编写一个报表生成器。
我有这样的配置文件:
bundle:
sections:
Report1:
buckets:
bucket1:
...
calculations:
calculation1:
...
report:
rows:
row1:
...
对于一些报告,这可能是不合时宜的。
我已尝试将此文件分成较小的文件并单独加载。这没有用。这就是我的尝试:
public function load(array $configs, ContainerBuilder $container)
{
$configuration = new Configuration();
$config = $this->processConfiguration($configuration, $configs);
$loader = new Loader\YamlFileLoader($container, new FileLocator(__DIR__.'/../Resources/config'));
$loader->load('bundle_report.yml');
$loader->load('bundle_report_1.yml'); // Order is important here
$loader->load('bundle_report_2.yml');
$loader->load('bundle_report_3.yml');
$loader->load('services.yml');
}
最好的方法是什么?它甚至可能吗?
我得到的错误是(在$ loader-> load()s发生之前抛出异常):
The child node "sections" at path "bundle" must be configured
如果我先切换订单($ loader-> load()s,那么新的Configuration()):
There is no extension able to load the configuration for "bundle"
配置如下所示:
public function getConfigTreeBuilder()
{
$treeBuilder = new TreeBuilder();
$rootNode = $treeBuilder->root('bundle');
$rootNode
->children()
->arrayNode('sections')->isRequired()
->prototype('array')
...
答案 0 :(得分:1)
这就是我的所作所为。
在app / config.yml导入部分
在我的包中定义了'Configuration'类(见上文)。捆绑生成器创建了这个。
然后,在我的BundleReportExtension类中添加了这些行
// Parse our configuration. It's included in /app/config/config.yml
// Parser is Configuration class in this package.
$configuration = new Configuration();
$config = $this->processConfiguration($configuration, $configs);
// Great. Parsed. Now copy to parameters for later use.
$container->setParameter('bundle.default_config', $config['default_config']);
$container->setParameter('bundle.sections', $config['sections']);
现在,我无法将配置作为数组获取:
$container->setParameter('bundle.sections');
在很多搜索中,这是我能想到的最好的。如果您有其他建议,请分享。
答案 1 :(得分:0)
您不应该从load方法加载配置文件。 这是
所有配置文件必须位于 app / config / 中,才能作为参数传递给load方法。正如你在这里所做的那样,它们毫无用处。 这就是你得到的原因
The child node "sections" at path "bundle" must be configured
如果您的报告正在发展,也许最好将其放入业务逻辑(模型/实体)并插入管理员(例如:奏鸣曲管理员)。