使用symfony2

时间:2017-05-29 08:20:12

标签: php symfony

我试图在Symfony上创建此配置

media:
    medias:
        category.type.subtype:
            reference : "UUID" # What is used to identify object in DB (needed)
            service : ~ # Service name "bundle.service.name"

            identifiers: # If empty, no generator can be created for this media
                channelId: # Example
                    label: ~ # Label for front
                    key: "channel_id" # Identifier in bdd (default : the name of identifier)
                channelTitle: ~
                # Other identifier....

            api: # Api configuration (can be null if no API)
                consumer_key: ~
                consumer_secret: ~
                # Others parameters...

            parameters:
                label: "Media 1" # Label in the front Default : generated with the name
                page:
                    factor: 50 # Factor (default 20)
                    styles:
                        style1:
                            css_class: class1
                        style2:
                            css_class: class2
                        # Other styles...
        category.type.subtype2: #parameters.....

我已经写了这段代码:

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

    $rootNode
        ->children()
            ->arrayNode("medias")
                ->prototype('array')
                    ->children()
                        ->scalarNode('reference')
                            ->isRequired()
                        ->end()

                        ->scalarNode('service')->end()

                        ->arrayNode("identifiers")
                            ->prototype('array')
                                ->children()
                                    ->scalarNode("label")->end()
                                    ->scalarNode("key")->end()
                                ->end()
                            ->end()
                        ->end()

                        ->arrayNode("api")
                            ->prototype('scalar')->end()
                        ->end()

                        ->arrayNode("parameters")
                            ->scalarNode("label")->end()

                            ->arrayNode("page")
                                ->children()
                                    ->integerNode("factor")->end()

                                    ->arrayNode("styles")
                                        ->prototype('array')
                                            ->children()
                                                ->scalarNode("css_class")->end()
                                            ->end()
                                        ->end()
                                    ->end()

                                ->end()
                            ->end()

                        ->end()

                    ->end()
                ->end()
            ->end()
        ->end()
    ;

但我发现错误:

  

调用未定义的方法Symfony \ Component \ Config \ Definition \ Builder \ ArrayNodeDefinition :: scalarNode()

我绝对不知道这个错误来自哪里:/

1 个答案:

答案 0 :(得分:1)

您没有指定哪一行代码是问题,但对我而言,您似乎忘记在children()节点定义后调用parameters方法:

->arrayNode("parameters")
    ->scalarNode("label")->end()

应该是这样的:

->arrayNode("parameters")
    ->children()
        ->scalarNode("label")->end()
        // other nodes
    ->end()