Vytvoření dalšího kontejneru v configu nebo tak něco

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

Ahoj,

chytřejší název mě nenapadnul. Jde mi o to že si v configu teď vytvářem docela dost různých komponent (taková vlastní knihovnička), mám na to extra config, takže je to pěkně oddělené, což je fajn, můžu k nim přistupovat $this->context->createKomponenta().

Jenže jak jich hodně tak v tom je trochu zmatek, navíc bych to chtěl mít extra oddělené od systémového. Takže by se mi líbilo mít je vygenerované v extra kontejneru, který by se připojil jako service do toho systemového, takže bych mohl pšistupovat $this->context->knihovna->createKomponenta().

Nějak mě nenapadá jak na to snad si ten vlastní napsat rovnou v php a připojit ten, ale to bych přisel o pohodlné konfigurování v neonu.

Díky.

David Grudl
Nette Core | 8147
+
0
-

Vytvoříš si obecný compiler extension:

class CommonExtension extends Nette\Config\CompilerExtension {}

a pomocí něj nové sekce do config.neon. Například sekci mySection:

$configurator = new Nette\Config\Configurator;
$configurator->onCompile[] = function($configurator, $compiler) {
	$compiler->addExtension('mySection', new CommonExtension);
};

A pak v config.neon:

common:
	nette:
		...

	services:
		...

	mySection:
		services:
			hello: World

A služby budou dostupné přes $container->mySection->hello.

Ani
Člen | 226
+
0
-

Ta nová konfigurace je vážně geniální :D