Problém s registrací vlastního linkGeneratoru v configu

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

Zdravím,
snažím se zaregistrovat vlastní linkGenerator, který extenduje Nette\Application\LinkGenerator. V configu mám:

services:
	application.linkGenerator: MyNamespace\MyLinkGenerator

a Tracy hlásí:

Service 'application.linkGenerator': Service of type Nette\Http\Url needed by BePositive\Model\Services\LinkGenerator::__construct() not found. Did you register it in configuration file?

Co dělám špatně?

Jan Mikeš
Člen | 771
+
0
-

Ukaž konstruktor tvého linkgenerátoru – podle chybové hlášky tam vyžaduješ Http\Url což ale není (a nemá být) registrovaná služba v DI.

David Matějka
Moderator | 6445
+
+4
-

Ahoj,
kdyz prepises definici sluzby, tak nette zahodi argumenty, ktere jsou nastaveny a bohuzel se k nim neda nejak snadno dostat.

ale muzes je tam znovu explicitne uvest

services:
	application.linkGenerator: MyNamespace\MyLinkGenerator(refUrl: @Nette\Http\IRequest::getUrl)
chikeet
Člen | 160
+
0
-

Jan Mikeš napsal(a):

Ukaž konstruktor tvého linkgenerátoru – podle chybové hlášky tam vyžaduješ Http\Url což ale není (a nemá být) registrovaná služba v DI.

Konstruktor je poděděný z \Nette\Application\LinkGenerator. Teď mi ale došlo, že si tam to Url můžu dodat v configu stejně, jako se dodává v ApplicationExtension. Jen nevím, jak to přesně zapsat. Tohle:

application.linkGenerator: BePositive\Model\Services\LinkGenerator(@Nette\Http\IRequest::getUrl)

mi nefunguje, respektive končí stejnou chybovou hláškou.

Edit: tak vyřešeno, díky @DavidMatějka!

Editoval chikeet (25. 11. 2016 16:59)