lingGenerator + vlastni routerFactory

balicekt
Člen | 52
+
0
-

Zdravim, potrebuju do emailu generovat odkazy a mam vlastni routerFactory kde pracuju s databazi.
Vse funguje OK jen v emailech se nepouziva mou vytvoreny routerFacotry ale jen nejaky zaklad z nette.

Zkousel jsem do linkGenerator v config.neon dopsat viz nize:

<?php
services:
	...

	- App\RouterFactory
	router: @App\RouterFactory::createRouter

	application.linkGenerator:
		arguments:
			router: @App\RouterFactory::createRouter

Ale bohuzel dostanu chybu
Undefined property: App\RouterFactory::$createRouter
?>

Nevite prosim jak s timto hnout? MOC DEKUJI

Editoval balicekt (18. 2. 2018 17:08)

David Matějka
Moderator | 6445
+
0
-

v emailech se nepouziva mou vytvoreny routerFacotry ale jen nejaky zaklad z nette.

z čeho usuzuješ? hlasi to nejakou chybu?

balicekt
Člen | 52
+
0
-

Vychazim z toho ze pokud toto zavolam v presenteru:

<?php
{link 'Shop:Product:', product => $product}

dostanu to co chci:
mojedomena.cz/moje-hezka-url-kterou-nacitam-z-db

ale kdyz to same zavolam v sablone pro email dostanu:
mojedomena.cz/product/?product=xyz

?>

Moje router factory je zavisla na dalsim servisu takze jsem do config.neon pridal

<?php

	- App\RouterFactory
	router: @App\RouterFactory::createRouter

	application.linkGenerator:
		arguments:
			router: @App\RouterFactory(@App\Model\Services\UrlService)::createRouter
?>

to uz nevyhazuje zadnou chybu ale moje routerFactory se stejne nevyuzije a vraci to zakladni url jak jsem psal

Editoval balicekt (18. 2. 2018 20:24)

CZechBoY
Člen | 3608
+
0
-

Proč vlastně nenecháš doplnění routeru do linkgeneratoru na autowiringu?

balicekt
Člen | 52
+
0
-

Puvodne jsem to tak mel v config.neon jsem nic s linkGneratorem nedaval jenomze linkGenerator pri generovani nefungoval tak jak mel tedy nepouzival muj vytvoreny RouterFactory jako kdyz se generuji linky vsude jinde v presenterech. Proto jsem zkusil linkGeneratoru podstrcit do argumentu muj router v config.neon. Ale ani to bohuzel nepomohlo takze uz opravdu netusim co s tim.

Budu moc rad za kazdou radu. Diky moc

Editoval balicekt (18. 2. 2018 23:37)

David Matějka
Moderator | 6445
+
0
-

pouzivas pri vytvareni linku pres link generator cely nazev presenteru vcetne modulu?

balicekt
Člen | 52
+
0
-

Ano pouzivam cely nazev MODUL:PRESENTER:AKCE

David Grudl
Nette Core | 8116
+
0
-

V arguments by asi místo router: @App\RouterFactory::createRouter mělo router: @router.

balicekt
Člen | 52
+
+1
-

Zmeneno na router: @router ale bohuzel vysledek stale stejny :( je stejny jako kdyz v config.neon tuto cast uplne zakomentuji

<?php
services:
	application.linkGenerator:
		arguments:
			router: @router

?>

Editoval balicekt (24. 2. 2018 12:16)

balicekt
Člen | 52
+
0
-

Dnes jsem pul dne debugoval a googlil a myslim ze by mohl byt problem v tom, ze router, ktery se pouziva v linkGeneratoru nema nastaven parametr module viz printscreen je to mozne, ze bude problem prave v tom? A pokud ano jakym zpusobem bych ho mel nastavit?

Diky za jakoukoliv radu.

obrazek zde: http://temp.tommylabs.com/x.png

Editoval balicekt (25. 2. 2018 19:11)

David Matějka
Moderator | 6445
+
0
-

ukaz definici routeru
edit:
a jeste ukaz, jak link vytvaris v sablone

balicekt
Člen | 52
+
0
-

Tak po dalsim debugovani problem nalezen. Prvni problem byl ze se automaticky nepredaval parametr „locale“ a tim padem nedochazelo k prekladu a druhy hlavni problem byl ten, ze v routeru, ktery jsem vytvoril a url se nacitala z DB jsem si kontroloval ve funkci constructUrl jestli predany parametr je mou pozadovana entita, ale co jsem netusil ze kdyby doctrine si nejak entity cachuje a tim padem nebyla vysledna trida po zavolani get_class() „App\Model\Entities\XYZ“ ale misto toho byla „Kdyby\GeneratedProxy\__CG__\App\Model\Entities\XYZ“. Takze to byl cely problem. Moc dekuji za vsechny rady!!!!