小编cap*_*vej的帖子

Symfony Config Treebuilder

我想要创建如下配置:

root_node:
    static_key:
        dynamic_key_1: [array, of, values]
        dynamic_key_2: [array, of, values]
Run Code Online (Sandbox Code Playgroud)

我似乎无法弄清楚正确的Treebuilder语法.

我试过了:

$rootNode
    ->children()
        ->arrayNode('static_key')
            ->prototype('scalar')
            ->end()
        ->end()
    ->end()
;
Run Code Online (Sandbox Code Playgroud)

但我得到:

路径"root_node.static_key.dynamic_key_1"的类型无效.期望的标量,但得到阵列.

当我切换到:

$rootNode
    ->children()
        ->arrayNode('static_key')
            ->prototype('array')
            ->end()
        ->end()
    ->end()
;
Run Code Online (Sandbox Code Playgroud)

我明白了:

"root_node.static_key.dynamic_key_1"下无法识别的选项"0,1,2"

我最终发现我可以使用配置传递:

$rootNode
    ->children()
        ->arrayNode('static_key')
            ->prototype('variable')
            ->end()
        ->end()
    ->end()
;
Run Code Online (Sandbox Code Playgroud)

但这并不能保证我得到一个数组.

有人能指出我正确的方向吗?


我知道我可以这样做:

/// 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} …
Run Code Online (Sandbox Code Playgroud)

symfony

6
推荐指数
1
解决办法
803
查看次数

标签 统计

symfony ×1