Inject neautowirované servisy do presenteru

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

Jak řeknu Nette, aby narvalo do presenteru službu, která se nadá najít pomocí autowire?

Kdyby mi někdo chtěl tvrdit, že to nepotřebuju, tak mám příklady :) 1) nepoděděná doctrine repository 2) ukládátko obrázků do složky použité jako originalImagesRepository a thumbnailsRepository

jiri.pudil
Nette Blogger | 1032
+
0
-

Od Nette 2.1 můžeš presenter zaregistrovat jako službu a závislosti si předat explicitně v configu:

services:
	fooPresenter:
		class: FooPresenter
		setup:
			- setFooRepository(@fooRepository)
Honza Marek
Člen | 1664
+
0
-

Dík. Ještě mě napadla jedna specialitka. Jak něco takového nastavit BasePresenteru?

thunderbuff
Člen | 164
+
0
-

Můžeš tu svou službu předat ručně do nějaké „mezislužby“ a tu do basepresenteru injectovat běžným způsobem.

Honza Marek
Člen | 1664
+
0
-

To není řešení, ale workaround.

Jan Tvrdík
Nette guru | 2595
+
0
-

Honza Marek wrote: Jak něco takového nastavit BasePresenteru?

Přepsat PresenterFactory =)

Filip Procházka
Moderator | 4668
+
0
-

Služby by mělo jít dědit, ale nezkoušel jsem, možná to bude řvát že tomu chybí classa.

services:
	basePresenter:
		setup:
			- setFooRepository(@fooRepository)

	fooPresenter < basePresenter:
		class: FooPresenter