Vlastni Router a route podle instance komponenty

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

Vyvíjíme silně modulární/komponentovou aplikaci, kde se každé komponenta získá id obsahu, který má zobrazit. Pokusím se vysvětlit na příkladu:

Mějme dvě komponenty ListControl (výpis článků) a DetailControl (detail článku) – List control zobrazuje obsah s id:2. A já bych se potřeboval z výpisu článků dostat do detailu článku, který má vypisovaat také obsah s id:2. Mám vlastně pomyslné dvě instance DetailControl (pro různé obsahy) na dvou různých stránkách (s jinými vlastnostmi).

V šabloně ListControlu (který ví o id obsahu) mám {plink Article:Default:detail $articleId => $item->article_id}. Informaci o instanci bych si jako parametr ideálně nechtěl předávat.

Do constructUrl() mi jde $appRequest, kde jsou informace o linku, kam směřuji, ale chybí mi tam informace o component, z které $appRequest vychází. Kdybych tuto informaci dostal, mohl bych na základě informací z komponenty (o id obsahu) vybrat správnou stránku, kam směřuji.

Nevím přesně, jak funguje persistentní parametr komponenty, resp. mi žádné parametry do url nešly. Je nějaká možnost případně dostat do $appRequest (kterou dostávám v constructUrl()) ještě informaci, kterou tam dám z komponenty?


{plink} používám, protože chci jít z komponenty na jiný presenter, který mi komponenty vykreslí (se vším okolo, co tam potřebuju). Podle toho, co jsem také vyčetl z kódu, persistentní parametr komponenty by se mi do parametrů přidal, kdybych volal signál, což nedělám…


Díky za rady, J.

Editoval Skic (1. 11. 2012 11:57)

Skic
Člen | 18
+
0
-

Vyřešeno vlastním makrem, které přidá do requestu proměnnou z volané komponenty a router si ji odstraní, aby v url nepřekážela. Díky tomu je zachována i funkčnost klasického makra {plink}, pokud se do parametrů napíše daný parametr.