Pridanie classu active na konkretnej podstranke
- Tomas8698
- Člen | 109
Zdravim chcel by som sa spytat ako kontrolujete na ktorej podstranke momentalne ste. Ja na stranke si to kontrolujem cez
$presenter->isCurrent($row->id) ? active
Len problém mam v tom že na mi to nefunguje na novo pridanej stránke mi
to neprida class, jednoducho to vyhodnoti ze sa nezhoduje s id presentera. Aj
ked si to vypisem co mi vraca tak mi nevrati nic na konkretnej podstranke. Na
ostatnych mi vraca 1.
Dakujem za radu :)
Editoval Tomas8698 (1. 5. 2021 10:27)
- Tomas8698
- Člen | 109
to mam v layout latte kontrolujem si to na mieste kde sa mi dynamicky pridava menu. A to som nevedel každopadne dakujem a pouzit ifCurrent ? na forum som to nasiel že niekto to použil na rovnaku kontrolu. :)
Takto vyzera kod
{foreach $pages->getChildNodes() as $row}
<li id='menuid-{$row->id}'>
<div n:class='!$row[published] ? unpublished, $presenter->isCurrent($row->id) ? active'>
<a n:href='Pages:edit $row->id'>{$row->name}</a>
</div>
- Marek Bartoš
- Nette Blogger | 1280
Voláš metodu presenteru isCurrent()
, kterou presenter v Nette
nemá (má jen isLinkCurrent() a isModuleCurrent()), takže ji musíš mít
definovanou ve svém presenteru. Bez znalosti implementace ti k tomu nedovedu
já a ani nikdo jiný říct víc.
Makro {ifCurrent} je deprecated, nahradila ho funkce
isLinkCurrent()
a chová se to stejně jako stejnojmenná metoda
presenteru. Ta by fungovat měla, ale porovnává odkazy, nikoli ID záznamu,
takže bys tomu měl předat stejné hodnoty jako do
odkazu – Pages:edit $row->id
Já bych to asi dělal tak, že bych si v presenteru předal aktuální
záznam do template, například takto
$this->template->current = $this->currentRow
a
v šabloně pak
porovnával $currentRow->id === $row->id