是否有可能从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.yml 到Acme/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)
我能够通过执行以下操作来使其工作:
在services.yml
imports:
- { resource: 'subdirectory\filename.yml' }
Run Code Online (Sandbox Code Playgroud)
现在,至于为什么会出现这种情况,而不是典型的情况@Bundle\Path\To\File?我怀疑是因为 DependencyInjection 类尚未完成处理,框架无法使用该注释来确定事物所在的位置。那些对内部结构更了解的人可以证实。
| 归档时间: |
|
| 查看次数: |
3680 次 |
| 最近记录: |