0

我想解析如下所示的 YAML 配置:

pageRoles:
  Report1: [abc, xyz, def]
  Report2: [fgh, xxx, yyy, rrr]

我希望生成的配置数组如下所示:

'pageRoles':
  'Report1':
    [
      'abc',
      'xyz',
      'def'
    ],
  'Report2': 
    [
      'fgh',
      'xxx',
      'yyy',
      'rrr'
    ]

我现在有这个:

    ->arrayNode( 'pageRoles' )
      ->prototype( 'array' )
        ->useAttributeAsKey( 'name' )
        ->prototype( 'array' )
          ->prototype( 'scalar' )->end()
        ->end()
      ->end() // array prototype
    ->end() // pageRoles

我收到了这个错误:

路径“site.pageRoles.ActivityReport.0”的类型无效。预期的数组,但得到了字符串

我错过了什么?

4

1 回答 1

1

制作 Symfony 配置树。我最喜欢打发无聊一天的方式。这似乎有效:

    public function getConfigTreeBuilder()
    {
        $treeBuilder = new TreeBuilder('my');
        $treeBuilder->getRootNode()
            ->children()
                ->arrayNode('pageRoles')
                    ->useAttributeAsKey('name')
                     ->arrayPrototype()->scalarPrototype()->end()->end()
                ->end() // pageRoles
            ->end() // root node
        ;
        return $treeBuilder;
    }

处理后我得到:

array:1 [
  "pageRoles" => array:2 [
    "Report1" => array:3 [
      0 => "abc"
      1 => "xyz"
      2 => "def"
    ]
    "Report2" => array:4 [
      0 => "fgh"
      1 => "xxx"
      2 => "yyy"
      3 => "rrr"
    ]
  ]
]
于 2020-08-12T18:57:11.383 回答