Понимание шаблона PHP Smarty Foreach с вложенным - PullRequest
0 голосов
/ 05 марта 2012

В моем шаблоне smarty есть следующий код:

{foreach from=$categories item=l}
          <tr>----------START---------------</tr> <br/>

        {$l.category_name|strip_tags}
        {$l.sub_category}

        {while $l.sub_category}

            <td>{$l.category_name|strip_tags}</td>
            {foreach from=$l.sub_category item=k}
                <td>{$k.category_name|strip_tags}</td>
                <br/>
            {/foreach}

            <br/>
        {/while}

        ----------END---------------
            <br/>
        <br/>
    {/foreach}

Это выводит:

---------- START --------------- Teachers & StaffArray

---------- END ---------------

---------- START --------------- ЗПТ & Фонды

---------- END ---------------

---------- START --------------- Программы обогащения

---------- END ---------------

Учителя и сотрудники 5-го класса, 6-го класса ЗПТ & Фонды
Программы обогащения

Я ожидал распечатать:

---------- START --------------- Учителя и сотрудники

5-й класс 6-й класс

---------- END ---------------

---------- START --------------- ОТА и фонды

---------- END ---------------

---------- START --------------- Программы обогащения

---------- END ---------------

Похоже, что вывод выводится после цикла for. Я новичок в шаблонах Smarty и не совсем понимаю, почему его печать такая.

Кроме того, у меня есть еще один вопрос:

{while $l.sub_category}

                {foreach from=$l.sub_category item=k}
                       <br/>
                    { $k.category_name|strip_tags }

                {/foreach}


               { assign var=l value=$l.sub_category}

                <br/>
            {/while}

Я хочу обновить переменную условия цикла ... но я не совсем уверен, как иначе, чем метод присвоения, который я сделал.

Любой совет приветствуется.

1 Ответ

1 голос
/ 05 марта 2012

Я думаю, что проблема может быть связана с вашей структурой таблицы, вы открываете и закрываете tr перед выводом тегов td, и некоторые браузеры отображают содержимое не по порядку.

это должно быть в соответствии с

{foreach cat loop}
  <tr>
    <td>
      {while loop}
    </td>
    <td>
      {foreach loop}
    </td>
  </tr>
{/close foreach loop}
...