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

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


limb3_2007_2:ru:packages:web_app:view

View

View занимается отображением данных. В качестве View по-умолчанию используется шаблонную систему WACT, набор собственных дополнительных тегов и компонентов для этой системы и небольшую прослойку классов, которые обеспечивают взаимодействие контроллера и шаблонизатора.

Класс lmbView и интерфейс lmbRenderer

View состоит из двух основных компонентов - это класс lmbView и интерфейс lmbRenderer.

lmbView - это по сути контейнер с данными, который всегда доступен через toolkit. В этот контейнер посредством метода set() можно добавлять любые данные. Потом эти данные попадут в шаблон при помощи какого-либо lmbRenderer-а.

  $view = lmbToolkit :: getView();
  $view->set('any_value', $value);

Также lmbView содержит метод для указания, какой шаблон должен использоваться при рендеринге:

  $view = lmbToolkit :: getView();
  $view->setTemplate('news/display.html');

Команды, которые обычно работают с lmbView, не должны заботиться о том, когда в действительности будет проведен рендеринг шаблона. Для рендеринга шаблона используется lmbViewRenderingFilter, который ставится в общую цепочку фильтров. Этот фильтр получает объект, реализующий интерфейс lmbRenderer в конструкторе. Если renderer не указан, по-умолчанию, используется lmbWACTRenderer, который отображает (рендерит) WACT-шаблон.

PullView vs PushView

Существует 2 основных способа передачи данных в шаблоны:

  1. PullView, когда шаблоны самостоятельно вытягивают данные из модели (базы данных).
  2. PushView, когда шаблон ведет себя пассивно и ждет, когда данные ему придут откуда-нибудь (обычно непосредственно из контроллера или из дополнительной прослойки View-helper-ов).

В приложениях, построенных на Limb, возможно поддерживать оба вида взаимодействия.

Использование методов класса lmbView :: set() - это есть пример использования PushView. PushView используется для передачи данных с форм (ошибки валидации, первоначальные данные) в шаблон, а также в некоторых других, когда использование PullView нецелесообразно. В остальных случаях чаще используется PullView, так как этот способ для большинства реализуемых нами проектов кажется удобнее.

Почему так было сделано? Мы считаем, что в большинстве web-проектов View гораздо более независимая часть системы, чем в традиционных приложениях. Поэтому, лучше, чтобы у остальной части системы было меньше зависимостей от View. Отображение изменяется гораздо чаще чем функциональность, оно также чаще более разнообразно, чем функциональная часть.

Для работы в рамках PullView в Limb существует такое понятие как lmbFetcher и специальные <fetch> теги, например <fetch>. При помощи этих классов шаблон может делать запросы к базе данных самостоятельно.

Также в шаблоне доступно содержимое Запроса (при использовании стандартного фильтра lmbViewRenderingFilter). Для этого можно использовать след. выражения шаблонной системы WACT:

 Action = {$#request.action}, News id = {$#request.news_id}

Обсуждение

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