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

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


limb3:ru:packages:wact:tags:fetch_tags:fetch_tag

<fetch>

Описание

<fetch> тег позволяет шаблонам самостоятельно получать данные, например, делать запросы к базе данных (естественно при помощи дополнительных helper-классов). Иногда это называют PullView или ActiveView.

Вытягивание данных происходит при помощи классов, которые мы называем fetcher-ы (фетчеры). В WACT-е для таких классов определен только интерфейс WactFetcher (limb/wact/src/components/fetch/WactFetcher.interface.php). В пакете WEB_APP есть базовый класс для fetcher-ов - это класс lmbFetcher.

fetcher-ы возвращают данные в виде итераторов или массивов (потом массивы автоматически преобразуются в итераторы в шаблоне), а затем эти данные тег <fetch> передает одному или некоторым target компонентам шаблона.

см. также раздел "Использование тегов <fetch> и <active_record:fetch>", где есть подробное описание как используются <fetch> теги в WACT шаблонах.

<fetch> тег является WactRuntimeComponentTag и создает активный компонент класса WactFetchComponent.

Синтаксис

<fetch using='fetcher_class_name' target='target1[,target2...]' [to='target1_dbe,target2_dbe'] [navigator='pager_name'] [first='true'|one='true'] [order='order_params'] [offset='offset'] [limit='limit'] [include='fetcher_class_file_path']/>

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

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

Атрибуты

  • using - путь до класса или просто имя класса, реализующего интерфейс WactFetcher. Если указано только имя класса - то класс должен быть включен (определен) до активации шаблона или должна быть возможность получить расположение класса при помощи __autoload(). Можно также использовать укороченный путь до класса, например, src/fetch/MyFetcher (без .class.php), если путь до папки, где находится src/fetcher находится в php include_path.
  • to - базовый атрибут, который указывает, куда нужно отправить данные из fetcher-а. Конечный компонент должны поддерживать метод registerDataset (обычно это тег <list:list>) или же метод registerDatasource (обычно это тег <core:datasource>), если используется так атрибут first или one. В качестве значения to можно использовать любой DBE.
  • target - упрощенный вариант атрибута to, который не поддерживает DBE, но который удобно использовать в шаблоне. Значение target преобразуетя по схеме «(value)» и передается в качестве значения атрибута to.
  • navigator - если результат запроса нужно ограничить или разбить на страницы, то можно использовать данный атрибут. Должен указывать на идентификатор pager-а, при помощи которого осуществляется разделение результата запроса на страницы.
  • first - при использовании этого атрибута <fetch> возьмет из полученного итератора только первую запись и отдаст ее в компонент, поддерживающий метод registerDatasource.
  • one - тоже, что и first.
  • offset - позволяет задат offset - количест элементов, которые нужно пропустить с начала списка.
  • limit - ограничение на количество получаемых данных.
  • include - позволяет указать, какой файл следует подключить, чтобы класс fetcher-а в атрибуте using был определен.

Внимание:

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

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

Содержимое

Дочерние теги <fetch:params> и <fetch:decorate>.

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

<fetch using="NewsFetcher" target="news" order='date' include='/src/fetcher/my_fetchers.inc.php'>
  <fetch:param limit='5'/>
  <fetch:decorate using='/src/datasource/JipAssigner' group_name='all' />
</fetch> 
<fetch using="NewsFetcher" to="#(news)" order='date' include='/src/fetcher/my_fetchers.inc.php'>
  <fetch:param limit='10' offer='10'/>
</fetch> 

см. также раздел "Использование тегов <fetch> и <active_record:fetch>", где есть различные примеры использования атрибутов offset, limit, first и других.

Обсуждение

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