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
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
Ahoj, ta metoda v extension se ma jmenovat loadConfiguration
a
ne loadConfigurator