1

我在 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.

Oke听起来不错。

# config.yml
nieuwname:
    test: "test"

然后我得到一个例外:

There is no extension able to load the configuration for "nieuwname"

我做错了什么?

4

2 回答 2

1

您需要使用您定义为根树的内容覆盖扩展别名。

namespace Your\BundleNameBundle\DependencyInjection;

class YourBundleNameExtension implements ExtensionInterface
{
    /**
     * {@inheritDoc}
     */
    public function getAlias()
    {
        return 'nieuwname';
    }
}

更改根树名称以匹配别名命名约定,这往往是将您的包名称变形为小写和下划线。

所以一个名为的包MyWebsiteBundle将具有别名my_website

$apiNode = $treeBuilder->root('your_bundle_name');
于 2014-03-10T13:32:21.333 回答
0

这是因为您的扩展类中的别名并不完全相同。Symfony2 使用命名约定检测别名(例如,名为 MyCustomAPIBundle 的包将具有 my_custom_a_p_i 别名)。如果你在你的配置类中改变它,你就会有这样的异常。

这篇文章就知道你要使用自定义别名,避免重复的代码行。

于 2014-03-10T13:32:03.623 回答