如何在Symfony2配置中添加一个带有值的数组?

2022-08-30 22:59:03

我想在配置文件(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"

我错过了什么?这有可能吗?


答案 1

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

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

答案 2

我认为你忽略了YaML不是一种标记语言,它甚至不是一种语言(它是一种数据序列化标准),所以它不知道任何语言结构,比如数组。它表示分组和数据位之间关系的主要“工具”是空格,冒号和破折号。
YaML 格式的 symfony 文档页面

my_bundle:
    columns: 
        - col1
        - col2

正如我从本节中收集到的:

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

序列使用短划线后跟空格:

-菲律宾比索

-佩尔

-

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

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

推荐