添加新的子节点

时间:2012-09-24 10:11:07

标签: symfony

我创建了一个Configuration类,我构建了一个树,用于定义该类中的配置,同时创建一个我喜欢的子节点:

->children()
    ->scalarNode('node1')
        ->isRequired()
        ->cannotBeEmpty()->defaultValue('em_profession_label')->end()
        ->arrayNode('node2') 
            ->isRequired()
            ->requiresAtLeastOneElement()
            ->useAttributeAsKey('id')
            ->prototype('array')
        .....

现在我的问题是当我需要在我的yml文件中添加一个新的子节点,所以我必须一遍又一遍地重复上面的代码,然后我正在寻找一个解决方案,当我添加一个新的子节点时自动执行不在我的配置类中添加新代码......

1 个答案:

答案 0 :(得分:0)

致电prototype()后,您可以指定每个子节点的外观。

//...
->arrayNode('nodes')
    ->prototype('array')
        ->children()
            ->scalarNode('option_name1')->end()
            ->scalarNode('option_name2')->end()
        ->end()
    ->end()
->end()
//...

这意味着在您的YML配置文件中,您可以根据需要定义任意数量的节点,只要它们与您在配置中映射的节点相匹配即可。例如......

nodes:
    node1:
        option_name1: somevalue
        option_name2: someothervalue
    node2:
        option_name1: somevalue
        option_name2: someothervalue
    node3:
        option_name1: somevalue
        option_name2: someothervalue