17

我想在配置文件(config.yml)中添加一个简单的值列表。例如 :

my_bundle:
    columns: ["col1", "col2"]

将节点添加到配置解析器时,它只是失败了:

$rootNode = $treeBuilder->root('my_bundle');
$rootNode->arrayNode('columns')->children()->end();

这是错误:

InvalidConfigurationException: Unrecognized options "0, 1" under "my_bundle.columns"

我错过了什么?这甚至可能吗?

4

2 回答 2

40

如果您想实现这样的节点,只需执行以下操作:

$rootNode
    ->children()
        ->arrayNode('columns')
            ->prototype('scalar')
            ->end()
        ->end()
    ->end()
;
于 2013-08-05T08:04:51.023 回答
0

我认为您错过了YaML不是标记语言,甚至不是这样的语言(它是数据序列化标准),因此它不知道任何语言结构,例如数组。它表达分组和数据位之间关系的主要“工具”是空格、冒号和破折号。
YaML 格式的 symfony 文档页面

my_bundle:
    columns: 
        - col1
        - col2

正如我从本节收集的:

YAML 文件很少用于描述简单的标量。大多数时候,它描述了一个集合。集合可以是元素的序列或映射。序列和映射都转换为 PHP 数组。

序列使用破折号后跟空格:

-PHP

-Perl

-Python

前面的 YAML 文件等价于以下 PHP 代码:

array('PHP', 'Perl', 'Python');
于 2013-08-05T08:12:39.240 回答