gpt4 book ai didi

arrays - 在 Symfony 2.1 语义配置中允许数组(具有默认值)或 null

转载 作者:行者123 更新时间:2023-12-04 00:47:36 26 4
gpt4 key购买 nike

我需要在包的语义配置中定义一个具有给定默认值的数组节点。这目前看起来像:

$node->arrayNode('foo')
->prototype('scalar')->end()
->defaultValue(array('1', '2', '3'))
->end();

我想让用户选择用 null 覆盖这个数组像:
my_bundle:
foo: ~

我不能使用空数组( []array() )代替 null鉴于 []应该具有与 null 不同的语义.

这是可能的还是有任何非丑陋的解决方法?目前我只是得到一个异常(exception):

InvalidTypeException: Invalid type for path "my_bundle.foo". Expected array, but got NULL

最佳答案

你可以尝试这样的事情:

$node->arrayNode('foo')
->beforeNormalization()
->ifTrue(function($v) { return $v === null; })
->then(function($v) { return array(); })
->end()
->prototype('scalar')->end()
->defaultValue(array('1', '2', '3'))
->end();

或者也许更简单:
$node->arrayNode('foo')
->treatNullLike(array())
->prototype('scalar')->end()
->defaultValue(array('1', '2', '3'))
->end();

否则,您可以使用 variableNode 而不是 arrayNode;这将为您提供更多的自由,但开箱即用的验证/合并逻辑更少。

关于arrays - 在 Symfony 2.1 语义配置中允许数组(具有默认值)或 null,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13149534/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com