我知道这个问题已经被问过多次了:
以上所有内容均未帮助我。也就是说,这是我的配置:
Composer.json
"require": {
"php": ">=7.0",
"doctrine/doctrine-bundle": "^1.6",
"doctrine/orm": "^2.5",
....
},
"require-dev": {
....
"doctrine/doctrine-fixtures-bundle": "^3.0",
}
我正在使用公司开发的Bundle,该软件包在上述版本的最后一个版本之前都可以正常工作(最新测试和工作配置为PHP 5.6,Doctrine软件包^ 1.6,Doctrine orm ^ 2.5,fixture软件包^ 3.0)。
此捆绑软件在 VendorName / BundleName / DataFixtures / ORM 中有一些灯具,所有灯具都具有以下声明:
Class MyFixture1 extends Fixture implements OrderedFixtureInterface,FixtureInterface, ContainerAwareInterface{
...
}
在此捆绑包中,有一个services.yml文件,由该文件加载:
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');
}
VendorName / BundleName / Resources / config / Services.yml我尝试了不同的配置:
services:
_defaults:
autowire: true
autoconfigure: true
public: false
VendorName\BundleName\:
resource: '../../*'
# you can exclude directories or files but if a service is unused, it's removed anyway
exclude: '../../{Entity,Repository,Tests,EventListener}'
我尝试在DataFixtures内部显式搜索:
VendorName/BundleName\DataFixtures\:
resource: '../../src/VendorName/BundleName/DataFixtures'
tags: ['doctrine.fixture.orm']
甚至手动配置服务:
VendorName\BundleName\DataFixtures\ORM\MyFixture1:
class: VendorName/BundleNamee\DataFixtures\ORM\MyFixture1
tags: ['doctrine.fixture.orm']
但是不幸的是,它一直在给出错误。任何我在做什么错的想法吗?很久以前,可以手动向Fixture命令指定要查找的捆绑软件,但现在不再可行
更新1: 抱歉,他们忘了指出错误消息:“找不到任何要加载的治具服务”
答案 0 :(得分:0)
对于登陆这里的每个人,我都解决了我的问题,我能告诉你的是:
答案 1 :(得分:0)
accepted answer帮助我指出了正确的方向,以使此工作正常进行。尽管缓存确实可能是一个问题,但是在您自己的捆绑软件中拥有灯具确实需要您对其进行注册。
使用SF 5.1。*,我创建了一个services_dev.yaml
文件并添加到:
services:
// other config
Namespace\Registered\In\Composer\For\Fixtures\:
resource: '../vendor/path/registered/in/composer/to/fixtures'
tags: ['doctrine.fixture.orm']
然后确实清除缓存,它应该可以工作。
已将*_dev
添加到services.yaml
文件中,因为这是Symfony仅在开发环境中(根据APP_ENV
环境变量)仅将其加载的一种方法。