From 2d0556871178d3a3f7e96f05a7536b94b379ca22 Mon Sep 17 00:00:00 2001 From: Pavel Linhart Date: Fri, 10 Jan 2025 16:26:03 +0100 Subject: [PATCH] Loading fixtures registered as service (#32) --- src/Command/LoadDataFixturesCommand.php | 2 +- src/DI/FixturesExtension.php | 16 ++++++++++++++++ 2 files changed, 17 insertions(+), 1 deletion(-) diff --git a/src/Command/LoadDataFixturesCommand.php b/src/Command/LoadDataFixturesCommand.php index ee7dcb8..e260c96 100644 --- a/src/Command/LoadDataFixturesCommand.php +++ b/src/Command/LoadDataFixturesCommand.php @@ -95,8 +95,8 @@ protected function execute(InputInterface $input, OutputInterface $output): int } $fixtures = $this->fixturesLoader->getFixtures(); - if ($fixtures === []) { + if ($fixtures === []) { if ($paths === []) { throw new LogicalException('Could not find any fixtures to load.'); } else { diff --git a/src/DI/FixturesExtension.php b/src/DI/FixturesExtension.php index 4b07937..79a5d47 100644 --- a/src/DI/FixturesExtension.php +++ b/src/DI/FixturesExtension.php @@ -2,7 +2,9 @@ namespace Nettrine\Fixtures\DI; +use Doctrine\Common\DataFixtures\FixtureInterface; use Nette\DI\CompilerExtension; +use Nette\DI\Definitions\ServiceDefinition; use Nette\Schema\Expect; use Nette\Schema\Schema; use Nettrine\Fixtures\Command\LoadDataFixturesCommand; @@ -35,4 +37,18 @@ public function loadConfiguration(): void ->addTag('console.command', 'doctrine:fixtures:load'); } + public function beforeCompile(): void + { + $builder = $this->getContainerBuilder(); + + $fixtures = $builder->findByType(FixtureInterface::class); + + /** @var ServiceDefinition $fixtureLoader */ + $fixtureLoader = $builder->getDefinitionByType(FixturesLoader::class); + + foreach ($fixtures as $fixture) { + $fixtureLoader->addSetup('addFixture', [$fixture]); + } + } + }