dve podminky v ifCurrent makru
- error414-c
- Člen | 45
Cau,
potreboval bych vlozit dve podminky do makra ifCurrent.
<?php
{ifCurrent Stranky:stranka1 or Stranky:stranka2}
?>
zkousel jsem i
<?php
{ifCurrent Stranky:stranka1|Stranky:stranka2}
?>
ale to take nefunguje
- Ondřej Mirtes
- Člen | 1536
Tohle nefunguje, to by znamenalo, ze se hleda presenter ‚stranka1‘ (vsimni si maleho pismene) uvnitr modulu Stranky.
- jansfabik
- Člen | 193
pro jistotu sem dám i to makro
tohle si dej do BasePresenteru:
public function templatePrepareFilters($template)
{
parent::templatePrepareFilters($template);
LatteMacros::$defaultMacros['ifCurrentIn'] = '<?php if (in_array(ltrim($presenter->getAction(TRUE), ":"), array(%%))): ?>';
}
a tohle napíšeš v šabloně:
{ifCurrentIn 'Stranky:stranka1', 'Stranky:stranka2'}
...
{/if}
- error414-c
- Člen | 45
<?php if (in_array(ltrim($presenter->getAction(TRUE), „:“), array(%%))): ?>
tohle me vyhodi syntax error, nei to nejaka silenost pro php5.3?
- Honza Marek
- Člen | 1664
error414-c napsal(a):
<?php if (in_array(ltrim($presenter->getAction(TRUE), „:“), array(%%))): ?>
tohle me vyhodi syntax error, nei to nejaka silenost pro php5.3?
Takovýhle komentáře jsou super. Syntax error může být způsoben třeba chybným použitím toho makra. Což ale nemůžeme poznat, když nevidíme, co se ti v šabloně vygenerovalo. To ti ukáže hned laděnka. Taky je otázka, proč to nepoznáš sám?
Pokud máš podezření na to, že výše uvedená konstrukce funguje jen v php 5.3, rád bych věděl, kterou konkrétně část máš na mysli, že by to mohla způsobovat?
Na závěr mi už jen vrtá hlavou, odkdy je php 5.3 šílenost.
- error414-c
- Člen | 45
nevsiml jsem si uvozovek kolem adresy na presenter ‚Stranky:stranka1‘.
BTW: kde se v manualu doctu jak funguje ta konstrukce
<?php if (in_array(ltrim($presenter->getAction(TRUE), „:“), array(%%))): ?>
rozhodne to neni validni php kod ale nejaky pseudo kod.
jansfabik: moc dik ted uz to funguje paradne
Editoval error414-c (9. 5. 2010 20:15)
- error414-c
- Člen | 45
redhead: jj, diky, uz se vtom zacinam orientovat, opravdu kralovstvi a pul kone za pouzitelny manual. :)
- jansfabik
- Člen | 193
BTW: kde se v manualu doctu jak funguje ta konstrukce
<?php if (in_array(ltrim($presenter->getAction(TRUE), ":"), array(%%))): ?>
LatteMacros
je třída, která přepisuje všechny značky {block ...}
,
{link ...}
apod. na PHP kód. Tyhle značky se definují v poli
$defaultMacros
. Tahle featura není moc zdokumentovaná, musíš si
ji odvodit ze zdrojového
kódu.
Ty dvě procenta se nahradí tím kódem, co uvedeš
{ifCurrentIn
tady }
. To znamená:
<?php if (in_array(ltrim($presenter->getAction(TRUE), ":"), array('Stranky:stranka1', 'Stranky:stranka2'))): ?>
$presenter->getAction(TRUE)
vrací absolutní cestu akce (:Stranky:stranka1)ltrim
odstraní dvojtečku na začátkuin_array
ověří zda to polearray('Stranky:stranka1', 'Stranky:stranka2')
obsahuje tu cestu
- ricco24
- Člen | 141
Chcel by som sa spýtať či sa nenašlo nejaké iné riešenie tohoto
porblému.
Menilo sa niečo za ten čas ktorý uplynul od odpovede ?
Keď zaregistrujem filter v base prezentery a použijem ho v sablone, tak sa mi neda uzavriet žiadnym z makier {/if} {/ifCurrent} {/ifCurrentIn}
vypise mi chybu ze Unexpected macro.
Editoval ricco24 (23. 3. 2011 14:25)
- jtousek
- Člen | 951
Přímo v kódu Latte maker jen ifCurrent napsáno: deprecated; use n:class=„$presenter->linkCurrent ? …“.
Což znamená volání této metody: https://api.nette.org/…ent.php.html#316
Jinak se to řešilo tady ale zatím bez výsledku.
- iqtq
- Člen | 20
ricco24 napsal(a):
Chcel by som sa spýtať či sa nenašlo nejaké iné riešenie tohoto porblému.
Menilo sa niečo za ten čas ktorý uplynul od odpovede ?Keď zaregistrujem filter v base prezentery a použijem ho v sablone, tak sa mi neda uzavriet žiadnym z makier {/if} {/ifCurrent} {/ifCurrentIn}
vypise mi chybu ze Unexpected macro.
Zkus přidat ještě jedno makro:
LatteMacros::$defaultMacros['/ifCurrentIn'] = '<?php endif ?>';
- Kranox
- Člen | 9
Ak by to malo platiť pre všetky „podstránky“ daného presenteru Stranky
{ifCurrent Stranky:*}class="aktivne_menu"{/ifCurrent}
a je takisto možné použiť aj makro n:class ak len pre určité podstránky
n:class="$presenter->isLinkCurrent('Stranky:stranka1') || $presenter->isLinkCurrent('Stranky:stranka2') ? aktivne_menu"