Registrace extension a použití s @inject

Upozornění: Tohle vlákno je hodně staré a informace nemusí být platné pro současné Nette.
RadekVicha
Člen | 3
+
0
-

Zdravím všechny,

s Nette teprve začínám a učím se dělat extensions pro DI. Nicméně hned z kraje jsem narazil na problém, kdy v extension registruju třídu, která dědí od Nette/Object, ale nedařít se mi jí injectnou do presenteru:

Service of type System\Configurator used in @var annotation at App\BackModule\Presenters\SettingsPresenter::$configurator not found. Did you register it in configuration file?

Extension vypadá následovně:

<?php declare(strict_types=1);

namespace System\Configurator\DI;

use Kdyby\Doctrine\DI\IEntityProvider;
use Nette\DI\CompilerExtension;
use System\Configurator;

class ConfiguratorExtension extends CompilerExtension implements IEntityProvider
{
	public function loadConfigurator(): void
	{
		$builder = $this->getContainerBuilder();
		$builder->addDefinition($this->prefix('configurator'))
			->setClass(Configurator::class);
	}

	function getEntityMappings(): array
	{
		return ['System\Configurator' => __DIR__ . '/..'];
	}
}

Extension registruji v config.neon do sekce extensions:

configuration: System\Configurator\DI\ConfiguratorExtension

Předem děkuji za postčení správným směrem!

David Matějka
Moderator | 6445
+
+1
-

Ahoj, ta metoda v extension se ma jmenovat loadConfiguration a ne loadConfigurator

RadekVicha
Člen | 3
+
0
-

@DavidMatějka Ah, slušná nepozornost, díky moc! :-)