Подтвердить что ты не робот

Как добавить массив со значениями в конфигурации Symfony2?

Я хотел бы добавить простой список значений в файлы конфигурации (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"

Что мне не хватает? Возможно ли это?

4b9b3361

Ответ 1

Если вы хотите достичь node, как это, просто выполните:

$rootNode
    ->children()
        ->arrayNode('columns')
            ->prototype('scalar')
            ->end()
        ->end()
    ->end()
;

Ответ 2

Я думаю, вам не хватает того, что YaML не является языком разметки, это даже не langauge как таковой (это стандарт сериализации данных), поэтому он не знает каких-либо языковых конструкций, например массивов. Его основным "инструментом" для выражения группировки и отношений между битами данных является пробел, двоеточия и тире.
На странице документации Symfony формата YaML:

my_bundle:
    columns: 
        - col1
        - col2

Как я понимаю из этого раздела:

Файл YAML редко используется для описания простого скаляра. В большинстве случаев он описывает коллекцию. Коллекция может быть последовательностью или отображением элементов. Обе последовательности и сопоставления преобразуются в массивы PHP.

Последовательности используют тире, а затем пробел:

- PHP

- Perl

- Python

Предыдущий файл YAML эквивалентен следующему PHP-коду:

array('PHP', 'Perl', 'Python');