Symfony2:自定义配置根目录

Flo*_*fer 5 php symfony

我的应用程序由一个被命名为喜欢多束HelloWorldAdminBundle,HelloWorldUserBundle,HelloWorldDemoBundle.这导致在配置根等hello_world_demo,hello_world_userhello_world_demo.我希望我的捆绑包的配置根源是helloworld_demo,helloworld_userhelloworld_admin.那时我不得不提到这不是一个技术问题,而是一个美学问题.

我试图实现自定义扩展并在Bundle中注册它:

public function build(ContainerBuilder $container)
{
    parent::build($container);

    $container->registerExtension(new HelloworldDemoExtension());
}
Run Code Online (Sandbox Code Playgroud)

扩展名:

...
class HelloworldDemoExtension extends Extension
{
    public function load(array $configs, ContainerBuilder $container)
    {
        $configuration = new Configuration();
        $config = $this->processConfiguration($configuration, $configs);

        $loader = new Loader\YamlFileLoader($container, new FileLocator(__DIR__.'/../Resources/config'));
        $loader->load('services.yml');
    }

    public function getAlias()
    {
        return 'hello_world_demo';
    }
}
Run Code Online (Sandbox Code Playgroud)

最后是配置:

...
class Configuration implements ConfigurationInterface
{
    public function getConfigTreeBuilder()
    {
        $treeBuilder = new TreeBuilder();
        $rootNode = $treeBuilder->root('helloworld_demo');
        ...
        return $treeBuilder;
    }
}
Run Code Online (Sandbox Code Playgroud)

我按照说明如何为Bundle公开语义配置,但是当我添加一个项目时,config.yml我收到以下错误:

There is no extension able to load the configuration for "helloworld_demo"
Run Code Online (Sandbox Code Playgroud)

Flo*_*fer 3

我找到了解决问题的方法。它的工作原理与我在问题中描述的完全一样,但是,必须存在默认扩展(带有捆绑包的名称)。

我现在有一个名为 HelloWorldDemoExtension 的空但现有的扩展(带有别名hello_world_demo,另外我添加了 DemoExtension (带有别名helloworld_demo)并且它可以工作。