LATTE – Lze nějak rozlišit akci presenteru s a bez parametru?
- James07
- Člen | 41
Mám jednu akci v presenteru pro výpis produktů, ve výchozím stavu zobrazí všechny produkty, po zadání parametru zobrazí produkty z dané kategorie. A já chci v layoutlatte rozlišit, kdy je tam parametr a kdy ne, abych mohl zvýraznit v menu položku produkty(bez parametru) a kategorie(s parametrem)
Nyní se ptám v latte:
<?php
<li n:class="$presenter->isLinkCurrent('Products:default')">
?>
Ale nedokáži v tomto zápisu rozpoznat, pokud je zadán nějaký parametr.
- Jan Mikeš
- Člen | 771
Metoda isLinkCurrent() přijímá v druhém parametru array :-)
https://api.nette.org/…mponent.html#…
Editoval Lexi (9. 4. 2015 18:35)
- duke
- Člen | 650
Pokud jde o první parametr akce, mělo by fungovat např.:
<li n:class="$presenter->isLinkCurrent('Products:default', $parameterValue) ? current">
Pro nepřítomný parametr by mělo fungovat NULL
.
Pokud by toto nefungovalo, můžeš vždy použít
$presenter->getParameter('foo')
.
Šlo by to také řešit pomocí routeru, kde bys podle přítomnosti toho
parametru měnil název akce a pak by sis vystačil s
isLinkCurrent('Products:default')
a např.
isLinkCurrent('Products:detail')
.
- duke
- Člen | 650
Nejde o pole všech přípustných hodnot, ale o pole všech parametrů. Ve tvém případě pole s jedním parametrem (id produktu). Tzn. můžeš pro konkrétní id produktu napsat něco jako:
$presenter->isLinkCurrent('Products:default', ['productId' => $productId]);
… což lze za předpokladu, že productId
je prvním
parametrem akce Default, zkráceně zapsat také takto:
$presenter->isLinkCurrent('Products:default', $productId);
Kritérium, o které jde tobě (productId !== NULL), do metody
isLinkCurrent
nedostaneš a je třeba to vyřešit jinak (např.
jak jsi již patrně učinil přes
$presenter->getParameter('productId') !== NULL
).