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

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


limb3:ru:packages:wact:tags:core_tags:core_datasource_tag

<core:datasource>

Описание

При помощи этого тега в шаблоне создается новый контекст, куда можно передавать данные и из которого можно забирать данные. Тег <core:datasource> может использоваться чтобы создать контекст из значения какой-либо переменной, чтобы внутри контейнера сократить размер записи в выражениях (см. ниже пример).

Подробнее о контейнерах данных в WACT-шаблонах.

<core:datasource> - это WactRuntimeDatasourceComponentTag с активным компонентом класса WactDatasourceRuntimeComponent.

Синтаксис

 <core:datasource id='id' [from='extpression']>
 
  __some__content___
 
 </core:datasource>

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

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

Атрибуты

  • id - идентификатор тега. Тег генерит в шаблон переменную с названием по значению этого атрибута, ссылающуюся на контейнер данных, с которым работает тег (см. пример ниже).
  • from (опционально) - указывает путь, откуда можно забрать данные. Значение - выражение или DBE (см. пример использования ниже).

Содержимое

Любое

WactDatasourceRuntimeComponent

  • registerDatasource($datasource) – регистрирует контейнер данных в компоненте (другими словами передает новый набор данных в компонент).
  • set($property_name, $value) – заносит переменную в контейнер данных.
  • get($property_name) – возвращает переменную из контейнера данных.
  • getDatasource() – возвращает контейнер данных.

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

Вложенные контейнеры данных и модификаторы области видимости

В данном примере показано использование:

  • тега <core:datasource>
  • модификаторов области видимости.

Напомним, что {$somevar} - это переменная в текущем контейнере данных, {^somevar} - это переменная в родительском контейнере данных (можно использовать несколько раз {$^^somevar}, а {#somevar} - переменная глобального контейнера данных, коим является сам шаблон.

Допустим у нас такой шаблон /datasource.html:

<core:datasource id='main'>
 
 Name = {$name}<br/>
 
  <core:datasource id='secondary'>
   Secondary Name = {$name}<br/>
   Parent name = {$^name}<br/>
   Global name = {$#name}<br/>
  </core:datasource>
 
</core:datasource>

Теперь мы проставим данные в этот шаблон:

$template = new WactTemplate('datasource.html');
$template->set('name', 'Mike');
 
$main = $template->getChild('main');
$main->set('name', 'Pavel');
// Можно также использовать $main->registerDatasource(array('name' => 'Pavel'));
 
$secondary = $template->getChild('secondary');
$secondary->set('name', 'Sergey');
// Можно также использовать $template->setChildDatasource('secondary', array('name' => 'Sergey'));

В итоге получим:

Name = Pavel<br/>

Secondary name = Sergey<br/>
Parent name = Pavel<br/>
Global name = Mike<br/>

Использование атрибута from

В данном примере показано использование атрибута from для заполнения контейнера данных.

В предыдущем примере мы заполняли контейнер данных тега <core:datasource> из внешнего php-файла. Здесь мы покажем, как <core:datasource> может забирать данные самостоятельно при помощи атрибута from. Значение атрибута from в общем виде - это выражение, правда допускается использование краткой формы (без {$}, только DBE, см. ниже)

Шаблон:

  <core:datasource from='{$#article.author}'>
   Person name: {$name}<br/>
   The same as above line: {$#article.author.name}<br/>
  </core:datasource>

php-скрипт, использующий шаблон:

$template = new WactTemplate('datasource_from.html');
$template->set('article' => array('author', array('name' => 'Ivan')));

В итоге получим:

   Person name: Ivan<br/>
   The same as above: Ivan <br/>

В краткой форме from выгладит следующим образом:

  <core:datasource from='#article.author'>
   Person name: {$name}<br/>
   The same as above line: {$#article.author.name}<br/>
  </core:datasource>

Использование php-переменной

  <core:datasource id='my_article'>
    <?php $title = $my_article->getTitle(); ?>
    {$$title}
  </core:datasource>

см. раздел Использование php-кода в шаблонах.

Обсуждение

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