防止TreeBuilder为未定义的参数返回空数组

时间:2015-03-30 15:02:52

标签: symfony

我正在使用TreeBuilder为我的Bundle加载配置。该数据用于angularJs扩展。

现在即使我使数组可选并且不在由TreeBuilder解析的config.yaml中定义它,返回的结果在其集合中具有所述数组的键 - 这导致angularJs崩溃。

示例Treebuilder:

    $rootNode = $treeBuilder->root('acme');

    $rootNode
        ->children()
            ->scalarNode('type')->end()
            ->arrayNode('foo')
                ->children()
                    ->scalarNode('a1')->end()
                    ->scalarNode('a2')->end()
                ->end()
            ->end()
            ->arrayNode('bar')
                ->children()
                    ->scalarNode('b1')->end()
                    ->scalarNode('b2')->end()
                ->end()
            ->end()
        ->end()
    ->end();

示例config.yaml

acme:
    type: "you"
    bar: 
        b1: "get"
        b2: "it"

示例结果:

{type: "you", foo: {}, bar: {b1: "get", b1: "it"}}

我需要的结果:

{type: "you", bar: {b1: "get", b1: "it"}}

我的config.yaml中没有定义foo部分,但我无法让TreeBuilder不将它放在输出中。

显然结构要复杂得多,我考虑解析生成的数组,并使用unset删除某些空数组,这是一个肮脏的解决方案。

0 个答案:

没有答案