Ответ 1
Если вы хотите достичь node, как это, просто выполните:
$rootNode
->children()
->arrayNode('columns')
->prototype('scalar')
->end()
->end()
->end()
;
Я хотел бы добавить простой список значений в файлы конфигурации (config.yml). Например:
my_bundle:
columns: ["col1", "col2"]
При добавлении node в парсер конфигурации он просто терпит неудачу:
$rootNode = $treeBuilder->root('my_bundle');
$rootNode->arrayNode('columns')->children()->end();
Вот ошибка:
InvalidConfigurationException: Unrecognized options "0, 1" under "my_bundle.columns"
Что мне не хватает? Возможно ли это?
Если вы хотите достичь node, как это, просто выполните:
$rootNode
->children()
->arrayNode('columns')
->prototype('scalar')
->end()
->end()
->end()
;
Я думаю, вам не хватает того, что YaML не является языком разметки, это даже не langauge как таковой (это стандарт сериализации данных), поэтому он не знает каких-либо языковых конструкций, например массивов. Его основным "инструментом" для выражения группировки и отношений между битами данных является пробел, двоеточия и тире.
На странице документации Symfony формата YaML:
my_bundle:
columns:
- col1
- col2
Как я понимаю из этого раздела:
Файл YAML редко используется для описания простого скаляра. В большинстве случаев он описывает коллекцию. Коллекция может быть последовательностью или отображением элементов. Обе последовательности и сопоставления преобразуются в массивы PHP.
Последовательности используют тире, а затем пробел:
-
PHP
-
Perl
-
PythonПредыдущий файл YAML эквивалентен следующему PHP-коду:
array('PHP', 'Perl', 'Python');