我使用ConfigurationInterface为我的捆绑包构建配置。我的扩展文件如下所示:
public function load(array $configs, ContainerBuilder $container) {
$configuration = new Configuration();
$config = $this->processConfiguration($configuration, $configs);
$container->setParameter('my_admin_included_bundles', $config['included_bundles_namespace']);
$container->setParameter('my_admin_widget_script_file', $config['widget_script_file']);
$container->setParameter('my_admin_widgets', $config['widgets']);
$container->setParameter('my_admin_menu', $config['menu']);
}
public function getAlias() {
return 'my_admin';
}
我通过将我的配置参数放入(全局)app/config.yml 中来测试它,它可以工作。但是我想将这些参数放入自定义文件,例如MyBundle\Resources\Config\my_config.yml,并将此文件与全局文件合并。有什么建议吗?
在app/config/config.yml
文件中,您可以导入其他配置文件(即使使用其他格式):
# app/config/config.yml
import:
- { resource: path/to/my_config.yml }
但是,如果您使用预置配置,则更好(它使您的捆绑包更可重用)。这样,您就可以为其他捆绑包的配置设置默认值。这样,用户仍然可以在需要时覆盖它。
好的。我找到了问题的临时解决方案。看起来像这样
use SymfonyComponentYamlParser;
public function load(array $configs, ContainerBuilder $container) {
$yaml = new Parser();
$configs = $yaml->parse(file_get_contents(__DIR__ . '/../Resources/config/config.yml'));
$configuration = new Configuration();
$config = $this->processConfiguration($configuration, $configs);
$container->setParameter('my_cms_widget_script_file', $config['widget_script_file']);
$container->setParameter('my_cms_layout_list', $config['layout_list']);
$container->setParameter('my_cms_default_layout', $config['default_layout']);
$container->setParameter('my_cms_widgets', $config['widgets']);
$container->setParameter('my_cms_menu', $config['menu']);
}
我采用我的自定义 config.yml,将文件解析为数组,然后作为参数添加到容器中。有什么建议吗?