【发布时间】:2019-12-03 23:37:33
【问题描述】:
我正在为 Symfony 构建一个简单的包,我想知道是否可以运行位于其中的固定装置,因为它不在项目 src 根文件夹中。
这是我的项目结构:
Project
|
+--AdminBundle <- My custom bundle
| +--Controller
| +--DataFixtures
| | |
| | +--AdminFixtures.php <- The fixtures I want to run
| |
| +--DependencyInjection
| +--Entity
| +--Resources
|
+--assets
+--bin
+--config
+--public
+--src
+--templates
+--vendor
这是AdminFixtures.php的代码
namespace ExampleVendor\AdminBundle\DataFixtures;
use App\AdminBundle\Entity\User;
use App\AdminBundle\Entity\Profile;
use Doctrine\Bundle\FixturesBundle\Fixture;
use Doctrine\Common\Persistence\ObjectManager;
use Doctrine\Bundle\FixturesBundle\ORMFixtureInterface;
use Doctrine\Bundle\FixturesBundle\FixtureGroupInterface;
use Symfony\Component\Security\Core\Encoder\UserPasswordEncoderInterface;
class AdminFixtures extends Fixture implements FixtureGroupInterface {
private $passwordEncoder;
public function __construct(UserPasswordEncoderInterface $passwordEncoder) {
$this->passwordEncoder = $passwordEncoder;
}
public function load(ObjectManager $manager) {
// Fixtures stuff
}
/**
* This method must return an array of groups
* on which the implementing class belongs to
*
* @return string[]
*/
public static function getGroups(): array {
return ['admin'];
}
}
当我运行php bin/console doctrine:fixtures:load
我收到一条错误消息:
[错误] 找不到任何要加载的夹具服务。
我读到每一个实现FixtureGroupInterface 的类都会自动注册为fixture,但我认为这不起作用,因为我在这里寻求帮助。
如何手动将其注册为夹具?如何使php bin/console doctrine:fixtures:load 命令起作用??
【问题讨论】:
标签: php symfony doctrine-orm symfony4