Инструменты пользователя

Инструменты сайта


limb3:ru:packages:wact:tags:iterator_tags:iterator_transfer_tag

<iterator:transfer>

Описание

<iterator:transfer> позволяет передавать итераторы из источника данных в другие активные компоненты. Путь до переменной, где хранится итератор указывается при помощи выражения в атрибуте from. <iterator:transter> позволяет ограничивать передаваемый итератор, накладывать offset, сортировать элементы, декорировать данные (см. тег <iterator:decorate>). В целом, <iterator:transfer> тег можно воспринимать как аналог <fetch> тега.

см. также раздел "Передача данных внутри шаблонов".

Синтаксис

<iterator:transfer from='expression' target='target' [to='target_dbe'] [first|one='true'] [order='order_params'] [offset='offset'] [limit='limit'] />

Область применения

В любом месте WACT шаблона.

Атрибуты

  • from – выражение, обычно путь до переменной, содержимое которой можно считать итератором (настоящий итератор или массив). Поддерживает краткую форму для значения, когда значок выражения опускается и используется только DBE.
  • to - DBE, путь до компоненты, который должен получить данные. Данный компонет должен поддерживать метод registerDataSet(), если передается весь итератор, или же метод registerDatasource(), если передается только первая запись из итератора (при использовании атрибута first).
  • target – идентификатор компонента, который должен получить данные. Значение target преобразуется по схеме «(value)» и передается в качестве значения to.
  • first - указывает, что необходимо передать не весь итератор, а только его первую запись.
  • one - аналогично first (доступно с версии WEB_APP > 0.2)
  • order - позволяет задать параметры сортировки. Например, title=DESC,date=ASC
  • offset - позволяет задать отступ (offset), с которого будет начитаться итерирование элементов итератора.
  • limit - позволяет задать ограничение на количество элементов в итераторе.

Внимание:

  • для работы с атрибутами offset и limit необходимо, чтобы итератор, получаемый из fetcher-а поддерживал метод paginate()
  • для работы с атрибутом order необходимо, чтобы итератор поддерживал метод sort($order_params = array())

Это важно, если вы создаете свои собственные итераторы, а не используете те, что есть в Limb, например, в пакете DATASOURCE

Содержимое

Дочерние теги <iterator:decorate>, если необходимо.

Пример использования

<list:list id='folders'>
<table>
 <list:item>
 <tr>
  <td>{$title}</td>
 </tr>
 <tr>
 <td>
 
  <iterator:transfer from='kids' target='kids' limit='5'/>
 
  <list:list id='kids'>
  <table>
   <list:item>
   <tr>
   <td><a href='{$uri}'>{$uri}</a></td>
   <td>{$title}</td>
   </tr>
   </list:item>
  </table>
  </list:list>
 </list:item>
 </td>
</tr>
</table>
</list:list>

Позволит вывести список разделов и список дочерних элементов для каждого раздела, ограничивая количество дочерних элементов пятью.

Обсуждение

Ваш комментарий. Вики-синтаксис разрешён:
   ___    __ __   ___    __  ___   __  ___
  / _ \  / //_/  / _ \  /  |/  /  /  |/  /
 / // / / ,<    / ___/ / /|_/ /  / /|_/ / 
/____/ /_/|_|  /_/    /_/  /_/  /_/  /_/
 
limb3/ru/packages/wact/tags/iterator_tags/iterator_transfer_tag.txt · Последние изменения: 2010/11/10 10:02 (внешнее изменение)