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 | 2659
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. :)