Menu v layout.latte cez beforeRender() v Presenteri

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

Caute, skusam spravit menu podla navodu Staticky web v Nette

v presenteri mam:

public function beforeRender()
    {
        $this->template->menuItems = array(
            'Home' => 'Homepage:',
            'Tables' => 'Tables:',
            'Other' => 'Other:',
        );
    }

potom by som chcel vypisat array do @layout.latte a zvyraznit <li> na ktorom sa prave nachadzam (napr. som na stranke Home a chcem aby Home v <li> malo class active) pridanim class=„active“. Zatial som neprisiel ako to spravne nakodovat, vedel by mi s tym niekto pomoct prosim?

Aurielle
Člen | 1281
+
0
-
<a n:href="Homepage:" n:class="$presenter->linkCurrent ? active">Link</a>

Pro tvůj případ to bude velmi podobné.

Etch
Člen | 403
+
0
-

Zhruba takto:

<ul n:inner-foreach="$menuItems as $item => $link">
    <li {ifCurrent $link}class="active"{/ifCurrent}><a n:href="$link">{$item}</a></li>
</ul>
Aurielle
Člen | 1281
+
0
-

@Etch: makro ifCurrent je deprecated. Místo něj se použije n:class a $presenter->isLinkCurrent('destination').

Baugi
Člen | 2
+
0
-

Dakujem za riesenia, po par testoch som zistil ze {ifCurrent} riesenie je mnohom spolahlivejsie, $presenter->isCurrent ? active zobrazuje posledne dve stranky ako aktivne

Etch
Člen | 403
+
0
-

@gmvasek: Teď jsem koukal do API a skutečně je deprecated. To jsem vůbec nevěděl.

n: makra nepoužívám, protože pak mám trochu problém s přehledností. Každopádně dík za info, aspoň vím, že to mám od teď řešit přes klasický {if} a ne přes {ifCurrent}.

Aurielle
Člen | 1281
+
0
-

Baugi napsal(a):

Dakujem za riesenia, po par testoch som zistil ze {ifCurrent} riesenie je mnohom spolahlivejsie, $presenter->isCurrent ? active zobrazuje posledne dve stranky ako aktivne

$presenter->linkCurrent je zkratka, a ověřuje poslední odkaz vygenerovaný pomocí n:href. Pokud to potřebuješ jinak, musíš plnou verzi jak jsem psal, tzn. $presenter->isLinkCurrent('destination').