试图调用名为“arrayNode”的未定义方法

时间:2017-10-22 22:05:54

标签: php symfony configuration

我在Symfony 3.5项目的config.yml文件中有这个配置:

my_config:
    token: mHSHlSHl-QqSHlX-SHlQqShzO2ibzGnsNk-Q
    username: test

    development:
        developers_id: [130]
        maintenance:
            enable: true
            text: "text of text"

我有一个包在我的configuration.php文件中解析此配置。在bundle依赖注入中我有这个代码:

$treeBuilder = new TreeBuilder();
$rootNode = $treeBuilder->root('my_bundle');
$rootNode->children()
    ->scalarNode("username")
    ->end()
    ->scalarNode("token")
        ->isRequired()
    ->end()
    ->arrayNode('development')
        ->children()
            ->booleanNode('send_log')
                ->defaultFalse()
            ->end()
            ->arrayNode('developers_id')
                ->prototype('scalar')
            ->end()
            ->arrayNode('maintenance')
                ->children()
                    ->booleanNode('enable')
                        ->defaultFalse()
                    ->end()
                    ->scalarNode('text')
                        ->defaultValue('default text')
                    ->end()
                ->end()
            ->end()
        ->end()
    ->end()
->end();

return $treeBuilder;

当我运行此代码时,我收到此错误:

  

尝试调用类的名为“arrayNode”的未定义方法   “的Symfony \元器件\配置\定义\生成器\ ArrayNodeDefinition”。

我该怎么办?

1 个答案:

答案 0 :(得分:1)

我收到此错误,因为在->prototype('scalar')我没有写->end()之后,我添加->end()并解决了我的问题

正确的语法是这样的:

->arrayNode('developers_id')    
    ->prototype('scalar')
    ->end()
->end()