Содержание
Выражения. Вывод значений переменных в шаблоне.
Данная страница предполагает, что Вам знакомы следующие понятия:
- что такое выражения и фильтры. Начальные сведения об этих элементах можно получить из раздела "Введение в шаблонную систему WACT. Основные элементы шаблонов"
- что такое контейнеры данных и то, что контейнеры данных образуют дерево при выполнении шаблона. Подробнее об этом в разделе "Компиляция и выполнение шаблона. Активные компоненты шаблона. Дерево контейнеров данных.".
Общий вид выражений.
Выражения - это специальные конструкции шаблонной системы WACT, которые позволяют выводить какие-либо значения (переменные или обычные строки) в шаблон. Выражения также позволяют применять к значениям специальные фильтры, то есть модифицировать значения при выводе.
Выражения имеют общий вид: {$Expression[|filter1|filterN]}, где:
- {$…} - знак самого выражения.
- Expression - имя переменной или строка, которую необходимо вывести.
- filter1, filterN - фильтры, применяемые к выводимым данным. Несколько фильтров разделяются вертикальными чертами.
По-умолчанию, WACT применяет функцию htmlspecialchars для всех выражений. То есть специальные символы, такие как '(одинарные кавычки), «(двойные кавычки), &(амперсанды), <(меньше), >(больше) транформируются в HTML эквиваленты. Для того, чтобы отменить это модификацию, используйте фильтр raw, например, {$Content|raw}.
Вывод литеральных значений при помощи выражений
Выражения иногда используются для вывода литеральных значений, например, строк:
{$"this is a constant"}
{$'this is a constant'}
Например, это применяется для перевода строк:
<h1>{$'Search'|i18n:'/search'}</h1>
Здесь к константному значению 'Search' будет применен фильтр i18n, который переведет строку на язык пользователя при помощи пакета I18N.
Вывод переменных
Для вывода значения переменной в шаблон используется конструкция вида {$VariableName} (вернее {$DBE}, но об этом чуть позднее), например:
<h1>{$Title}</h1>
WACT будет искать переменную с именем Title внутри текущего контейнера данных. Чтобы заполнить значение переменной, указанной в этом маленьком примере, вам может потребоваться приблизительно такой скрипт (помните, что сам шаблон - это корневой контейнер данных):
$template = new Template('/index.html'); $template->set('Title', 'Заголовок страницы');
Тег <core:set> можно использовать для того, чтобы определять значение переменных во время фазы компиляции. Это может быть удобно, когда одно выражение используется в нескольких местах.
Выражения в качестве атрибутов тегов
Выражения могут использоваться также для указания атрибутов обычных HTML-тегов, а также большинства WACT-тегов:
<a class="{$display_class}">...</a>
<fetch:param record_id="{$id}"/>
Единственное ограничение здесь - это атрибут id, в котором не могут применяться выражения.
DBE. Data Binding Expressions
На самом деле общий вид выражения для вывода переменной - {$DBE[|filters]}, где DBE - это Data Binding Expression - полный путь до переменной, а [|filters] - опциональный набор фильтров.
DBE в общем виде состоит из двух частей:
- Пути (модификаторы) до контейнера данных.
- Пути до переменной относительно полученного контейнера данных.
Например: {$^^author.name}, что значит: а) получить контейнер данных на 2 уровня выше (контейнеры данных образуют дерево, ак вы помните), чем текущий, б) из него получить переменную author, из которой вывести переменную name.
Подробнее о Data Binding Expressions.

Обсуждение