【问题标题】:definining a sequence configuration in symfony 2.1 using treebuilder使用 treebuilder 在 symfony 2.1 中定义序列配置
【发布时间】:2023-03-09 09:42:01
【问题描述】:

我正在寻求有关我尝试在 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,但我相信这是用于映射或具有键值对的数组,我只是想配置一个数字序列。

【问题讨论】:

    标签: configuration symfony-2.1


    【解决方案1】:

    据我所知, enumNode 只允许您在给定的一组值中设置一个 single 值。 在您的示例中,default_values 的有效值将是 12 但不是数组。

    以下配置允许您设置一个带有默认值的数值数组,以防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();
    

    我希望是你所需要的。

    【讨论】:

      猜你喜欢
      • 2016-01-22
      • 1970-01-01
      • 2012-03-24
      • 1970-01-01
      • 2012-11-29
      • 1970-01-01
      • 2021-09-03
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多