Smarty: перезапустить {цикл}, используя вложенные {разделы} - PullRequest
0 голосов
/ 25 августа 2010

Я пытаюсь сгенерировать цвета фона для нескольких таблиц, содержащихся в блоке {section} ... {/section}, но если я не присваиваю имена функциям {cycle}, цикл продолжается, а не перезапускается при следующемвстречается.Та же проблема возникает, когда я использую именованные циклы и одни и те же именованные циклы повторяются в разделе.

Пример:

{section name=i loop=$tables}
    <table>
        {section name=j loop=$tables[i].data}
           <tr class="{cycle name=bgcolor values='odd_row,even_row'}">
               ..
               ..
               ..
           </tr>
        {/section}
    </table>
{/section}

Как я могу получить {cycle} для сброса себя на каждомитерация {section name=j}?Можно ли сочинять имена в Smarty?(используйте что-то вроде {cycle name=bgcolor.$i})

Примечание: у меня та же проблема на другой странице, которая включается несколько раз в один .tpl, и каждый раз, когда она показывает таблицу, цикл цвета фона продолжается оттуда, куда он ушел, вместо того, чтобы сбросить себя.Я понимаю, что это нормальное поведение (поскольку у Smarty нет возможности узнать, где начинается мой цикл), но я бы хотел его изменить.

1 Ответ

3 голосов
/ 25 августа 2010

Используется reset=true как это:

{section name=i loop=$tables}
    <table>
        {cycle name=bgcolor print=false reset=true values='odd_row,even_row'}
        {section name=j loop=$tables[i].data}
            <tr class="{cycle name=bgcolor values='odd_row,even_row'}">
                ..
                ..
                ..
            </tr>
        {/section}
    </table>
{/section}
...