Přidání třídy u aktuální stránky funguje v 50% případů

wujido
Člen | 8
+
0
-

Zdravím,
snažím se zprovoznit zvýrazňování aktivní položky v menu. Mám to udělané takto:

{foreach $publicPages as $site}

	{dump $site}
	{dump $presenter->isLinkCurrent('Page:show', $site->id)}

	<a n:class="nav-link, $presenter->isLinkCurrent('Page:show', $site->id)  ? active"
 	n:href="Page:show $site->id">{$site->name}</a>
{/foreach}

Z nějaké ho neznámého důvodu to u poloviny případů funguje a u poloviny ne. Výpis: $presenter->isLinkCurrent('Page:show', $site->id) vrací true vždy u správné stránky, ale class active se občas přidá a občas ne. Nevíte kde by mohla být chyba?
Děkuji :)

Phalanx
Člen | 310
+
0
-

Mrkni co ti vyhodí zdrojový kód stránky – je u všeho třída active?
Pokud ano, mohl bys mít např. špatně css (označovat např. sudé řádky)

wujido
Člen | 8
+
0
-

Css není špatně. Třídu active to občas nepřidá, i když je

{dump $presenter->isLinkCurrent('Page:show', $site->id)}

true

vypadá to jakoby podmínka v makru n:class fungoval jen když se jí zachce… (i když je pokaždé v nějakém průchodu cyklu true)

Editoval wujido (31. 3. 2019 20:11)

Altimit
Člen | 82
+
0
-

já používám skrze class="{ifCurrent :Frontend:Blog:*} active {/ifCurrent}a zatím mně to nezklamalo.

CZechBoY
Člen | 3608
+
0
-

@Altimit Myslim, že tě zklamu, ale ifCurrent makro je deprecated.
https://latte.nette.org/cs/tags#…

@wujido Pošli ještě co je v $presenter->getName() když to hodí true ikdyž by nemělo.

wujido
Člen | 8
+
0
-

Detekce true/false je v pořádku. Snad tu chybu objasní screen

Martk
Člen | 661
+
0
-

Podívej se do cache, co se ti vygenerovalo do php. Jaká verze latte?

Btw dá se udělat i tohle:

<a n:href="Page:show $site->id" n:class="nav-link, $presenter->isLinkCurrent() ? active">{$site->name}</a>

bez parametrů otestuje poslední vytvořenou url.

Editoval Martk (1. 4. 2019 8:36)