====== ====== ===== Описание ===== При помощи этого тега в шаблоне создается новый контекст, куда можно передавать данные и из которого можно забирать данные. Тег может использоваться чтобы создать контекст из значения какой-либо переменной, чтобы внутри контейнера сократить размер записи в выражениях (см. ниже пример). [[limb3:ru:packages:wact:data_containers|Подробнее о контейнерах данных в WACT-шаблонах]]. - это WactRuntimeDatasourceComponentTag с активным компонентом класса WactDatasourceRuntimeComponent. ===== Синтаксис ===== __some__content___ ===== Область применения ===== В любом месте WACT шаблона. ===== Атрибуты ===== * **id** - идентификатор тега. Тег генерит в шаблон переменную с названием по значению этого атрибута, ссылающуюся на контейнер данных, с которым работает тег (см. пример ниже). * **from** (опционально) - указывает путь, откуда можно забрать данные. Значение - выражение или DBE (см. пример использования ниже). ===== Содержимое ===== Любое ===== WactDatasourceRuntimeComponent ===== * **registerDatasource($datasource)** – регистрирует контейнер данных в компоненте (другими словами передает новый набор данных в компонент). * **set($property_name, $value)** – заносит переменную в контейнер данных. * **get($property_name)** – возвращает переменную из контейнера данных. * **getDatasource()** – возвращает контейнер данных. ===== Пример использования ===== Рабочие примеры см. [[http://projects.limb-project.com/wact/show.php?group=tags/core/datasource/]] ==== Вложенные контейнеры данных и модификаторы области видимости ==== В данном примере показано использование: * тега * модификаторов области видимости. Напомним, что {$somevar} - это переменная в текущем контейнере данных, {^somevar} - это переменная в родительском контейнере данных (можно использовать несколько раз {$^^somevar}, а {#somevar} - переменная глобального контейнера данных, коим является сам шаблон. Допустим у нас такой шаблон /datasource.html: Name = {$name}
Secondary Name = {$name}
Parent name = {$^name}
Global name = {$#name}
Теперь мы проставим данные в этот шаблон: $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
Secondary name = Sergey
Parent name = Pavel
Global name = Mike
==== Использование атрибута from ==== В данном примере показано использование атрибута from для заполнения контейнера данных. В предыдущем примере мы заполняли контейнер данных тега из внешнего php-файла. Здесь мы покажем, как может забирать данные самостоятельно при помощи атрибута from. Значение атрибута from в общем виде - это [[limb3:ru:packages:wact:expressions|выражение]], правда допускается использование краткой формы (без {$}, только DBE, см. ниже) Шаблон: Person name: {$name}
The same as above line: {$#article.author.name}
php-скрипт, использующий шаблон: $template = new WactTemplate('datasource_from.html'); $template->set('article' => array('author', array('name' => 'Ivan'))); В итоге получим: Person name: Ivan
The same as above: Ivan
В краткой форме from выгладит следующим образом: Person name: {$name}
The same as above line: {$#article.author.name}
==== Использование php-переменной ==== getTitle(); ?> {$$title} см. раздел [[limb3:ru:packages:wact:php_code_in_templates|Использование php-кода в шаблонах]].