Sf2从子目录导入bundle services.yml

tho*_*kor 6 yaml symfony

是否有可能从config中的子目录导入services.yml文件?

我有这样的结构:

[Acme/MyBundle/Resources]

--[config]

----[routing]

----[services]

------[User]

--------services.yml

----[validation]

----routing.yml

----services.yml

----validation.yml
Run Code Online (Sandbox Code Playgroud)

现在我想导入文件Acme/MyBundle/Resources/config/services/User/services.ymlAcme/MyBundle/Resources/config/services.yml,这是在装DependencyInjection/AcmeMyExtension.代码Acme/MyBundle/Resources/config/services.yml是:

imports:
    - { resource: "@AcmeMyBundle/Resources/config/services/User/services.yml" }

services:
    //other services
Run Code Online (Sandbox Code Playgroud)

我收到错误:

Fatal error: Uncaught exception 'InvalidArgumentException' with message 'The file "@AcmeMyBundle/Resources/config/services/User/services.yml" does not exist (in: ., C:\wamp\www\dir\src\Acme\MyBundle\DependencyInjection/../Resources/config).' in C:\wamp\www\dir\app\cache\dev\classes.php:1518 
Stack trace: #0 C:\wamp\www\dir\vendor\symfony\symfony\src\Symfony\Component\Config\Loader\FileLoader.php(70): Symfony\Component\Config\FileLocator->locate('@AcmeMyBundle/...', '.', false) #1 C:\wamp\www\dir\vendor\symfony\symfony\src\Symfony\Component\DependencyInjection\Loader\YamlFileLoader.php(97): Symfony\Component\Config\Loader\FileLoader->import('@AcmeMyBundle/...', NULL, false, 'services.yml') #2 C:\wamp\www\dir\vendor\symfony\symfony\src\Symfony\Component\DependencyInjection\Loader\YamlFileLoader.php(54): Symfony\Component\DependencyInjection\Loader\YamlFileLoader->parseImports(Array, 'services.yml') #3 C:\wamp\www\dir\src\Acme\MyBundle\DependencyInjection\AcmeMyExtension.php(26): Symfony\Co in C:\wamp\www\dir\vendor\symfony\symfony\src\Symfony\Component\Config\Loader\FileLoader.php on line 100
Run Code Online (Sandbox Code Playgroud)

Acme/MyBundle/DependencyInjection/AcmeMyExtension.php的代码:

<?php

namespace Core\MpgBundle\DependencyInjection;

use Symfony\Component\DependencyInjection\ContainerBuilder;
use Symfony\Component\Config\FileLocator;
use Symfony\Component\HttpKernel\DependencyInjection\Extension;
use Symfony\Component\DependencyInjection\Loader;

/**
 * This is the class that loads and manages your bundle configuration
 *
 * To learn more see {@link http://symfony.com/doc/current/cookbook/bundles/extension.html}
 */
class CoreMpgExtension extends Extension
{

    /**
     * {@inheritDoc}
     */
    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');
    }
}
Run Code Online (Sandbox Code Playgroud)

Res*_*per 1

我能够通过执行以下操作来使其工作:

services.yml

imports:
    - { resource: 'subdirectory\filename.yml' }
Run Code Online (Sandbox Code Playgroud)

现在,至于为什么会出现这种情况,而不是典型的情况@Bundle\Path\To\File?我怀疑是因为 DependencyInjection 类尚未完成处理,框架无法使用该注释来确定事物所在的位置。那些对内部结构更了解的人可以证实。