Содержание
Вывод списков
WACT-теги для вывода списков
Для вывода списков в шаблонах используется группа тегов ListTags.
<table border="1"> <tr> <th>№</th> <th>Название</th> <th>Объем, л</th> <th>Вес, кг</th> </tr> <list:list id="table"> <list:item> <tr> <td>{$:ListRowNumber}</td> <td>{$name}</td> <td>{$volume}</td> <td>{$weight}</td> </tr> </list:item> <list:default> <tr><td colspan='4'>Список пуст!</td></tr> </list:default> </list:list> </table>
- Тег <list:list> - основной тег, который выводит свое содержимое, если в активный компонент тега передали непустой список (итератор).
- Тег <list:item> - повторяет определенную порцию шаблона по количеству элементов в итераторе тега <list:list>.
- Тег <list:default> - выводит свое содержимое только в том случае, если список не содержит ни одного элемента.
- Тег <list:separator> - используется для разделения одного или группы элементов в списке.
- Предопределенное свойство {$:ListRowNumber}, которое используется внутри тега <list:item>, отображает номер элемента в списке.
В результате мы можем получить несколько результатов. Например, такой:
| № | Название | Объем, л | Вес, кг |
|---|---|---|---|
| 1 | Цистерна АБ-102 | 2400 | 340 |
| 2 | Цистерна АБ-103 | 2000 | 300 |
Или такой:
| № | Название | Объем, л | Вес, кг |
|---|---|---|---|
| Список пуст! | |||
Вывод данных в несколько столбцов
Для вывода данных в несколько столбцов можно применять тег <list:separator>, который выводит определенный кусок кода раз в несколько элементов списка.
Например:
<list:list id="images"> <table> <tr> <list:item> <td> <img src='{$path}' border='0' /><br />{$title} </td> <list:SEPARATOR step="3"></tr><tr></list:SEPARATOR> </list:item> </tr> </table> </list:list>
Позволит вывести изображения в 3 колонки.
Если вы заметили, то выбранный нами способ для списков, например, с 10 элементами сгенерирует невалидную верстку, поэтому примеры необходимо немного доработать:
<list:list id="images"> <table> <tr> <list:item> <td> <img src='{$path}' border='0' /><br />{$title} </td> <list:SEPARATOR step="3"></tr><tr></list:SEPARATOR> </list:item> <list:fill upto='3' var='items_left'> <td colspan='{$items_left}'> </td> </list:fill> </tr> </table> </list:list>
Здесь мы использовали тег <list:fill> (доступен с версии WACT 0.3), который выполняет код шаблона, только если список не содержал количество элементов, кратное числу upto. При этом тег <list:fill> заполняет переменную с именем var и ставит ее в текущий контейнер данных (будьте аккуратны с именем переменной, так как вы можете случайно затереть что-то в текущейм контейнере данных, а <list:list> не является обычным контейнером данных).
В нашем случае мы просто предпочли вывести заглушку в виде <td colspan='2'>. Мы могли бы также воспользоваться тегом <core:repeat> для генерации недостающих ячеек:
<list:list id="images"> <table> <tr> <list:item> <td> <img src='{$path}' border='0' /><br />{$title} </td> <list:SEPARATOR step="3"></tr><tr></list:SEPARATOR> </list:item> <list:fill upto='3' var='items_left'> <core:repeat time='{$items_left}'> <td> <img src='/images/no_image.gif' alt='sorry, no image' /> </td> </core:repeat> </list:fill> </tr> </table> </list:list>
Дополнительные примеры
- Рабочие примеры использования тегов группы <list:list> можно найти в папке limb/wact/examples/tags/list
- см. примеры для тега <list:list>
- см. примеры для тега <list:separator>

Обсуждение