我想要创建如下配置:
root_node: static_key: dynamic_key_1: [array, of, values] dynamic_key_2: [array, of, values]
我似乎无法弄清楚正确的Treebuilder语法.
我试过了:
$rootNode ->children() ->arrayNode('static_key') ->prototype('scalar') ->end() ->end() ->end() ;
但我得到:
路径"root_node.static_key.dynamic_key_1"的类型无效.期望的标量,但得到阵列.
当我切换到:
$rootNode ->children() ->arrayNode('static_key') ->prototype('array') ->end() ->end() ->end() ;
我明白了:
"root_node.static_key.dynamic_key_1"下无法识别的选项"0,1,2"
我最终发现我可以使用配置传递:
$rootNode ->children() ->arrayNode('static_key') ->prototype('variable') ->end() ->end() ->end() ;
但这并不能保证我得到一个数组.
有人能指出我正确的方向吗?
我知道我可以这样做:
/// treebuilder $rootNode ->children() ->arrayNode('static_key') ->prototype('array') ->children() ->scalarNode('attr_1')->end() ->scalarNode('attr_2')->end() ->end() ->end() ->end() ->end() ; # config.yml root_node: static_key: # two different syntaxes for emphasis dynamic_key_1: attr_1: value_1 attr_2: value_2 dynamic_key_2: {attr_1: value_3, attr_2: value_4}
并接收以下PHP数组:
array('root_node' => array( 'static_key' => array( 'dynamic_key_1' => array( 'attr_1' => 'value_1', 'attr_2' => 'value_2' ), 'dynamic_key_2' => array( 'attr_1' => 'value_3', 'attr_2' => 'value_4' ), ), ));
我以前做过.
我刚刚知道为什么我不能严格要求一个非关联数组:
{attr_1: value_3, attr_2: value_4}
vs有[value_3, value_4]
什么不同?对我来说,两者都是数组:一个是关联的,另一个不是.