Jak předat render metodě hodnotu parametru – přes router

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

Ahoj, mám komponentu, která mi vypisuje v záhlaví menu:

šablona:

<nav>
    <div class="menu">
        <ul>
            {foreach $menuList as $item}
                <li><a href="{plink :FrontModule:Item:item $item->ID}">{$item->DESCRIPTION}</a></li>
            {/foreach}
        </ul>
    </div>
</nav>

Takže mám např. takovýto odkaz:

<a href="http://muj_web/item/7">Diskuze</a>

Jde nějak udělat (asi v routeru), aby se místo adresy http://muj_web/item/7 zobrazila adresa http://muj_web/diskuze ?

v routeru mám toto:

$router[] = new Route('diskuze[/<answer_id [0-9]+>]', 'FrontModule:Forum:default');//forum
$router[] = new Route('item/7[/<answer_id [0-9]+>]', 'FrontModule:Forum:default', Route::ONE_WAY);//forum

Takže když kliknu na odkaz http://muj_web/item/7 tak se dostanu do diskuze a v adresním řádku je správně napsáno http://muj_web/diskuze. Ale já bych potřeboval, aby to bylo i v menu.Díky

Další věc je, že mám databázi postavenou takto:

tabulka item: ID, DESCRIPTION, PARENT,…
tabulka article: ID, ITEM_ID, TITLE,…

Takže např. když user klikne v menu na položku „ostatní“ (http://www.muj_web.cz/item/6), tak je směrován do item presenteru, kde se v renderDefault($item_id) načtou všechny záznamy které mají item.PARENT = $item_id (6) a ty se mu vypíšou

Pokud se v itemu nenajde položka s daným parentem, tak jde již o konečný článek a tedy se provede redirect na ArticlePresenter (renderDefault($item_id)) a načte se z db článek kde article.ITEM_ID = $item_id;

Vše funguje perfektně, ale já např. vím, že fotogalerie je item.ID = 35 (http://www.muj_web.cz/item/35) a tak bych chtěl, aby se zobrazil odkaz http://www.muj_web.cz/fotogalerie ale přitom se po kliku volal presenter ItemPresenter, metoda renderDefault($item_id) a jejím parametrem by bylo $item_id=35

Lze to nějak udělat?Díky, Snad jsem to napsal dostatečně srozumitelně…

Editoval n.u.r.v. (11. 5. 2014 12:28)

Tomáš Votruba
Moderator | 1114
+
0
-

K prvnímu dotazu. Pokud chceš aplikovat router, je potřeba v a použít makro, tedy místo:

<a href="http://muj_web/item/7">Diskuze</a>

použít:

<a href="{plink :FrontModule:Item:item 7}">Diskuze</a>
n.u.r.v.
Člen | 485
+
0
-

Tomáš Votruba napsal(a):

K prvnímu dotazu. Pokud chceš aplikovat router, je potřeba v a použít makro, tedy místo:

<a href="http://muj_web/item/7">Diskuze</a>

použít:

<a href="{plink :FrontModule:Item:item 7}">Diskuze</a>

Ahoj, taky že to to tak mám – píšu to úplně nahoře, ale právě že se místo http://muj_web/forum zobrazí http://muj_web/item/7 …jenže já chci aby tam bylo to forum

Editoval n.u.r.v. (11. 5. 2014 23:12)