使用treebuilder在symfony 2.1中定义序列配置

时间:2012-08-13 16:21:40

标签: configuration symfony-2.1

我正在寻找一些我想在Symfony 2.1中实现的自定义配置参数的帮助

我是新手,但到目前为止,与Symfony合作非常棒。我现在正尝试使用config.yml使我的捆绑包更加用户友好和可配置。

我想要定义的参数是一系列默认金额,例如在我的配置中我有

mymain:
    default_values: [1, 2, 3, 4]

现在有了类似的东西,你如何正确使用treebuilder来添加节点并正确处理配置?

我试过的是

$rootNode
    ->children()
        ->enumNode('default_values')
            ->values(array(1, 2))
        ->end()
    ->end();

由此我得到以下异常:

  

路径“mymain.defaults”的类型无效。期望的标量,但得到阵列。

我希望配置是可选的,带有我指定的默认回退数组序列。

我也尝试过arrayNode,但我相信这是用于键和值配对的映射或数组,我只是试图配置一系列数字。

1 个答案:

答案 0 :(得分:2)

据我所知,enumNode只允许您在给定的值集中设置单个值。 在您的示例中,default_values的有效值为 1 2 ,但不是数组。

以下配置允许您在省略default_values的情况下使用默认值设置数值数组。

$rootNode
    ->children()
        ->arrayNode('default_values')
            ->defaultValue(array(2,3))
            ->prototype('scalar')
                ->validate()
                    ->ifTrue(function($v){ return !is_numeric($v); })
                    ->thenInvalid('%s is not a number')
                ->end()
            ->end()
        ->end()
    ->end();

我希望你能得到它。