lingGenerator + vlastni routerFactory
- balicekt
- Člen | 52
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
v emailech se nepouziva mou vytvoreny routerFacotry ale jen nejaky zaklad z nette.
z čeho usuzuješ? hlasi to nejakou chybu?
- balicekt
- Člen | 52
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)
- balicekt
- Člen | 52
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
pouzivas pri vytvareni linku pres link generator cely nazev presenteru vcetne modulu?
- David Grudl
- Nette Core | 8218
V arguments
by asi místo
router: @App\RouterFactory::createRouter
mělo
router: @router
.
- balicekt
- Člen | 52
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
ukaz definici routeru
edit:
a jeste ukaz, jak link vytvaris v sablone
- balicekt
- Člen | 52
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!!!!