Как мне определить массив массивов скаляров в Symfony Configuration.php?
Я хочу проанализировать конфигурацию 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. Ожидаемый массив, но есть строка
Что мне не хватает?
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"
]
]
]