Problem s latte sablonou ked ju obalim do n:snippet

Upozornění: Tohle vlákno je hodně staré a informace nemusí být platné pro současné Nette.
duskohu
Člen | 778
+
0
-

Caute, Nevedeli by ste mi poradit? Mam sablonu na traverzovani kolem stromu. Sablona je v poriadku vsetko vypisuje ako ma, ale ked ju zabalim do divu a na div dam n:snippet, tak mi to vrati:

Unexpected </li> in .../ProductCategory/default.latte

pokial n:snippet nepouzijem, ale zabali div do {snippet treeList}, tak ze zase vsetko ok. Nestretli ste sa niekto s problemom pouzivania n:snippet?

<div n:snippet="treeList" class="tree-list">
    {if $categoryList->count()}
    <ul data-root-id="{$rootItem->id}" class="sortable" data-max-levels="3" data-handle-url="{link moveItem!}">
        {? $temp = $rootItem->depth+1; }
        {foreach $categoryList as $node}
            {if $node->depth > $temp}
                <ul>
                {? $temp = $node->depth;}
            {elseif ($node->depth == $temp) && (!$iterator->isFirst())}
                </li>
            {elseif $node->depth < $temp}
                </li>
                {? $a=str_repeat("</ul></li>",$temp - $node->depth)}
                {!$a}
                {? $temp = $node->depth;}
            {/if}
                <li class="li_{$node->id}" data-id="{$node->id}">
                <div class="item-header" >
                    <i class="icon-move"></i>
                    <a class="link" href="#">{$node->name}</a>
                </div>
        {/foreach}
         </li>
         {? $a=str_repeat("</ul></li>",$temp-1)}
         {!$a}
    </ul>
    {/if}
</div>

Editoval duskohu (24. 2. 2013 12:42)

vvoody
Člen | 910
+
0
-

No len tak z dedukcie typujem že latte po použití n:snippet začne parsovať html tagy aby našiel koniec bloku. Na tomto evidentne havaruje lebo tej šablóne sám nechápem na prvý ani druhý pohľad. Jednak je neprehľadná a druhak vypisuješ html párové tagy tak že, jeden z páru je priamo v kóde a druhý vypísaný z premennej (dobre to chápem čo sa tam deje?). Pri použití bloku {snippet } samozrejme nemá parser problém nájsť ukončenie bloku. Nejde to napísať trochu slušnejšie? Použiť rekurziu?

duskohu
Člen | 778
+
0
-

Praveze ucel je vypisat strom bez rekurzie, 1 foreach, 1 select, a mas strom. Takze podla toho co pises, tak budem musiet pouzit {snippet} a nie n:snippet.

vvoody
Člen | 910
+
0
-

Tie dáta by sa určite dalo popredu upraviť do štruktúry vhodnej na rekurziu. Ale to je na tebe, či chceš aby iný programátor nemal problém s pochopením tvojho kódu ;)