Данная страница предполагает, что Вам знакомы следующие понятия:
Выражения - это специальные конструкции шаблонной системы WACT, которые позволяют выводить какие-либо значения (переменные или обычные строки) в шаблон. Выражения также позволяют применять к значениям специальные фильтры, то есть модифицировать значения при выводе.
Выражения имеют общий вид: {$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[|filters]}, где DBE - это Data Binding Expression - полный путь до переменной, а [|filters] - опциональный набор фильтров.
DBE в общем виде состоит из двух частей:
Например: {$^^author.name}, что значит: а) получить контейнер данных на 2 уровня выше (контейнеры данных образуют дерево, ак вы помните), чем текущий, б) из него получить переменную author, из которой вывести переменную name.
Подробнее о Data Binding Expressions.
Обсуждение