我在treeBuilder中创建了一个新的根目录:
class Configuration implements ConfigurationInterface
{
public function getConfigTreeBuilder()
{
$apiNode = $treeBuilder->root('nieuwname');
$apiNode
->children()
->scalarNode('test')
->isRequired()
->end();
}
}
然后我得到了下一个例外:
The child node "test" at path "nieuwname" must be configured.
Oké听起来不错。
# config.yml
nieuwname:
test: "test"
然后我得到一个例外:
There is no extension able to load the configuration for "nieuwname"
我做错了什么?
答案 0 :(得分:1)
您需要使用已定义为根树的内容覆盖扩展别名。
namespace Your\BundleNameBundle\DependencyInjection;
class YourBundleNameExtension implements ExtensionInterface
{
/**
* {@inheritDoc}
*/
public function getAlias()
{
return 'nieuwname';
}
}
或更改根树名称以匹配别名命名约定,这通常会使您的包名称变为小写和下划线。
因此,名为MyWebsiteBundle
的捆绑包将具有别名my_website
$apiNode = $treeBuilder->root('your_bundle_name');
答案 1 :(得分:0)
这是因为扩展类中的别名不完全相同。 Symfony2使用命名约定检测别名(例如,名为MyCustomAPIBundle的包将具有my_custom_a_p_i别名)。如果在配置类中更改它,则会出现这样的异常。
查看this article以了解您使用自定义别名并避免重复的代码行。