如何合并两个具有相同参数名称和不同子项的 YML 文件


how to merge two yml file with same parameter name and different children?

我将YML文件添加到每个捆绑包中的依赖注入文件夹中:

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');
    }
}

和加载参数.yml 每个捆绑包
我在参数.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'

但只有一个保留在管理菜单和管理员菜单元素被较新的文件覆盖
请帮帮我,谢谢

我找到了 1 种方法。在加载新参数之前,在捆绑包的扩展中获取此参数。

像这样:

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);
    }
}