我将 YML 文件添加到每个包中的依赖项注入(inject)文件夹中:
class GRFBlogExtension 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__.'/../Resources/config'));
$loader->load('services.yml');
$loader->load('parameters.yml');
}
}
并为每个包加载 parameters.yml
我在每个包的 parameters.yml 中都有类似的内容,例如:
博客包:
parameters:
adminmenu:
BlogBundle:
User:
title: Users
path: '/admin/User'
购物包:
parameters:
adminmenu:
ShopBundle:
category:
title: Categories
path: '/admin/category'
我想在调用 getParameter('adminmenu') 时像这样合并这些文件:
parameters:
adminmenu:
BlogBundle:
category:
title: Categories
path: '/admin/category'
ShopBundle:
User:
title: Users
path: '/admin/User'
但只有一个保留在 adminmenu 和 adminmenu 元素中 override 由较新的文件。
请帮助我。谢谢
最佳答案
我找到了一种方法。 在加载新参数之前在 Bundle 的扩展中获取此参数。
类似的东西:
class GRFBlogExtension extends Extension
{
public function load(array $configs, ContainerBuilder $container)
{
$configuration = new Configuration();
$config = $this->processConfiguration($configuration, $configs);
$adminMenuKey = 'adminmenu';
$coreAdminMenu = $container->getParameter($uiMapKey);
$loader = new YamlFileLoader($container, new FileLocator(__DIR__ . '/../Resources/config'));
$loader->load('services.yml');
$branchAdminMenu = $container->getParameter($adminMenuKey);
$groupedAdminMenu = $coreAdminMenu + $branchAdminMenu;
$container->setParameter($adminMenuKey, $groupedAdminMenu);
}
}
关于php - 如何合并两个具有相同参数名称和不同子项的 yml 文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38317550/