Unexpected {/ifset}, expecting {/define}

- hotline
 - Člen | 41
 
Ahoj, omlouvam se za relativne trivilani otazku, ale porad se s Nette po kruckach seznamuji a narazil jsem na nasledujici vec v latte.
Mam klasicky foreach prispevku v latte a v kazdem prispevku potrebuji vypsat par udaju pro kategorii prispevku. Kategorie se casto opakuji a tak se mi zda zbytecne znovu pokladat stejny dotaz do databaze, pokud jiz probehl.
Takhle to spis vysvetlim lip :) :
//$catID predavam pri includovani snippetu
{define snippet}
{!ifset $category[$catID]}
{var $category[$catID] = $template->getCat($catID)}
{/ifset}
//nejaky html kod, vypisovani promennych, apod., tam je vse ok
{/define}
Chybou je: Unexpected {/ifset}, expecting {/define}
Nevite, proc by to takhle nemohlo fungovat? Ja tam z pohledu logiky chybu
nevidim. Diky za rady.
EDIT: Ted me jeste napadlo:
{default $category[$catID] = $template->getCat($catID)}
Coz mi vraci: Unexpected '[', tak jeste mrknu jak funguji pole
v latte.
Editoval hotline (27. 6. 2015 17:43)

- Šaman
 - Člen | 2668
 
Jen pokud by nebylo úplně zřejmě, proč tomu tak je – latte se parsuje
a v tom prvním zápisu to pochopilo jako makro {!}, které ti bez
escapování vypíše ifset $category[$catID]. To se asi vykonalo,
nic nevypsalo a latte pak narazilo na neočekávané {/ifset}.
Pokud by makro {!} neexistovalo, napsalo by ti už nahoře
neznámé makro {!ifset}.
Pokud ti nefunguje ten zápis
{default $category[$catID] = $template->getCat($catID)}, tak
můžeš použít makro {?}. Default nastavuje
proměnnou, ale jestli umí pracovat s položkami pole, to nevím, nějak jsem
to zatím nepotřeboval. Když už pracuješ se složitějšími strukturami, je
lepší to pořešit v presenteru, a v latte spíš jen vypisovat.
Editoval Šaman (27. 6. 2015 21:04)

- hotline
 - Člen | 41
 
Diky moc za podrobne vysvetleni, Samane. :) Ja to chtel resit v presenteru, ale pak mi doslo, ze bych musel vykonavat ten samy pozadavek dvakrat (foreach; v presenteru i v latte), coz se mi moc nechtelo, protoze tech foreachu je vic.
Kazdopadne diky za vsechnu pomoc, ktera se mi tu dostava, jsem moc rad, ze jsem poznal Nette a po dlouhe dobe rozmysleni a dokopavani se jsem v nem zacal delat, vazne si ho nemuzu vynachvalit. :)