Zrušení (automatické) registrace konkrétního presenteru

Ivorius
Nette Blogger | 119
+
0
-

Lze v configu nebo přes CompilerExtension vynutit zrušení registrace pro konkrétní presenter?

Důvod je, že mám různé extension která mohou být na sobě závislá a potřebuji zařídit, aby se nezpracovával presenter (inject service) v jedné extension, pokud není dostupná druhá extension.

Editoval Ivorius (15. 12. 2018 20:44)

Badaboom
Člen | 33
+
0
-

Lze v CompilerExtension::beforeCompile() třeba takto:

$def = $builder->getDefinitionByType(\App\Presenters\FooPresenter::class);

if ($def) {
	$builder->removeDefinition($def->getName());
}

Nezabrání to ale vytvoření presenteru, protože výchozí PresenterFactory si tu třídu vytvoří i když ji nenajde v DI containeru (PresenterFactoryCallback::__invoke()).