Symfony 中的配置等同于验证配置。我想用 treebuilder 验证我的配置。在 yml-example 中,我给出了一个配置树的外观示例(将来,树会比现在更大)。但要做到这一点,我需要创建一个结构。
现在你能帮我创建树生成器吗?我已经用 arrayNode 和原型尝试了一切,但它不起作用。我得到像这样的例外
“FatalErrorException:错误:调用 /var/www/menu_bundle/src/my/MenuBundle/DependencyInjection/Configuration.php 第 29 行中的未定义方法 Symfony\Component\Config\Definition\Builder\NodeBuilder::prototype()”
基本理念:
我想生成一个 Symfony2-bundle,它在 HTML 中创建一个 menuStructure。为了生成 HTML 代码,我需要将 yaml 配置拉入对象结构中,这可行,但使用 symfony 进行验证不起作用...
下面是一个关于 menu.yml 外观的简单示例:
my_menu_structure:
menu:
name: test
cssClass: blubb
children:
child:
name: item1
route: route1
position: 0
child:
name: item11
route: route11
position: 0
child:
name: item2
route: route2
position: 1
现在我想在 Symfony2 中配置 Treebuilder,但它不起作用..
经过几次尝试,这是我的最后一个版本:
$treeBuilder = new TreeBuilder();
$rootNode = $treeBuilder->root('my_menu');
$rootNode
->children()
->arrayNode('menu')
->scalarNode('cssClass')
->defaultValue(array())
->prototype('array')
->scalarNode('name')
->scalarNode('route')
->scalarNode('Position')
->prototype('array')
->end()
->end()
->end();
我已经为 Menu 和 MenuItems 构建了对象。到目前为止一切正常,但我无法配置treebuilder。我正在寻找的是一种在树生成器中重用部分(menuItem-:名称,路线和子项)的方法,但是到目前为止我发现的所有内容都无法帮助我......其他一切都有效,我唯一的问题也就是说,我无法配置 Treebuilder,也无法使用 $this->container->get('menu.name') 从 yml 中获取配置。这会引发异常:您请求了一个不存在的服务“menu.name”。
到目前为止,我已经尝试了一些带有原型('array')的配置,但是 phpStorm 每次都说,它找不到一个 scalarNode 作为原型或 ->prototype()->children()->scalarNode( )..