Zvláštní chování $presenter->isLinkCurrent()
- Ages
- Člen | 128
Zdravím, zkouším první testy v Nette 3 a zatím vše bez problému.
Dnes jsem ale narazil na zváštnost:
V komponentě vypisuji menu:
//menu.latte
{foreach $menu as $key => $item}
<li n:class="$presenter->isLinkCurrent() ? uk-active"><a href="{plink articles, $key}">{$item}</a></li>
{/foreach}
<!-- articles.latte -->
<li class="uk-active"><a href="/shop/www/kategorie/fiskars">Fiskars</a></li>
<li class="uk-active"><a href="/shop/www/kategorie/oregon">Oregon</a></li>
<li><a href="/shop/www/kategorie/bahco">Bahco</a></li>
<li><a href="/shop/www/kategorie/gerber">Gerber</a></li>
<li><a href="/shop/www/kategorie/ke-stazeni">Ke stažení</a></li>
Netuším proč mi makro označilo 2 adresy jako aktivní, dělám neco špatně?
- Gappa
- Nette Blogger | 209
Divně se to zdá se chová, ale na druhou stranu – neměla by metoda
isLinkCurrent
dostat také nějaké parametry? :)
Tj.:
$presenter->isLinkCurrent('articles', $key)
- https://api.nette.org/…mponent.html#…
Editoval Gappa (20. 8. 2019 6:45)
- David Matějka
- Moderator | 6445
pokud neuvedes parametry, tak to bere, jestli posledni vytvoreny request je
current. predpokladam tedy, ze pred vypisem menu se nekde generoval link {plink
articles fiskars} (pripadne treba this
)
v nette 2.4 to imho fungovalo stejne, ale tipoval bych, ze tvuj kod vypadal nejak takto:
{foreach $menu as $key => $item}
<a href="{plink articles, $key}" n:class="$presenter->isLinkCurrent() ? uk-active">{$item}</a>
{/foreach}
tedy ze si nejdriv vygeneroval link a az potom kontroloval, zda je aktualni
- Gappa
- Nette Blogger | 209
Ages napsal(a):
Nicméně v Nette 2.4 to funguje i bez doplnění parametrů.
Prošel jsem zdroják – jestli to dobře chápu, tak pokud se nic nezadá, bere se poslední vytvořený link – možná se komponenty na stránce vykreslují v jiném pořadí a chová se to jinak? Ale určitě bych se na to nespoléhal :)
Editoval Gappa (20. 8. 2019 9:25)