====== Выражения. Вывод значений переменных в шаблоне. ====== Данная страница предполагает, что Вам знакомы следующие понятия: * что такое выражения и фильтры. Начальные сведения об этих элементах можно получить из раздела [[.intro|"Введение в шаблонную систему WACT. Основные элементы шаблонов"]] * что такое контейнеры данных и то, что контейнеры данных образуют дерево при выполнении шаблона. Подробнее об этом в разделе [[important_details|"Компиляция и выполнение шаблона. Активные компоненты шаблона. Дерево контейнеров данных."]]. ===== Общий вид выражений. ===== **Выражения** - это специальные конструкции шаблонной системы WACT, которые позволяют выводить какие-либо значения (переменные или обычные строки) в шаблон. Выражения также позволяют применять к значениям специальные **фильтры**, то есть модифицировать значения при выводе. Выражения имеют общий вид: {$Expression[|filter1|filterN]}, где: * {$...} - знак самого выражения. * Expression - имя переменной или строка, которую необходимо вывести. * filter1, filterN - фильтры, применяемые к выводимым данным. Несколько фильтров разделяются вертикальными чертами. По-умолчанию, WACT применяет функцию htmlspecialchars для всех выражений. То есть специальные символы, такие как '(одинарные кавычки), "(двойные кавычки), &(амперсанды), <(меньше), >(больше) транформируются в HTML эквиваленты. Для того, чтобы отменить это модификацию, используйте фильтр [[.filters:CoreFilters:RawFilter|raw]], например, {$Content|raw}. ===== Вывод литеральных значений при помощи выражений ===== Выражения иногда используются для вывода литеральных значений, например, строк: {$"this is a constant"} {$'this is a constant'} Например, это применяется для перевода строк:

{$'Search'|i18n:'/search'}

Здесь к константному значению 'Search' будет применен фильтр i18n, который переведет строку на язык пользователя при помощи пакета I18N. ===== Вывод переменных ===== Для вывода значения переменной в шаблон используется конструкция вида {$VariableName} (вернее {$DBE}, но об этом чуть позднее), например:

{$Title}

WACT будет искать переменную с именем Title внутри текущего контейнера данных. Чтобы заполнить значение переменной, указанной в этом маленьком примере, вам может потребоваться приблизительно такой скрипт (помните, что сам шаблон - это корневой контейнер данных): $template = new Template('/index.html'); $template->set('Title', 'Заголовок страницы'); Тег [[.tags:CoreTags:CoreSetTag|]] можно использовать для того, чтобы определять значение переменных во время фазы компиляции. Это может быть удобно, когда одно выражение используется в нескольких местах. ===== Выражения в качестве атрибутов тегов ===== Выражения могут использоваться также для указания атрибутов обычных HTML-тегов, а также большинства WACT-тегов: ... Единственное ограничение здесь - это атрибут id, в котором не могут применяться выражения. ===== DBE. Data Binding Expressions ===== На самом деле общий вид выражения для вывода переменной - {$DBE[|filters]}, где DBE - это Data Binding Expression - полный путь до переменной, а [|filters] - опциональный набор фильтров. DBE в общем виде состоит из двух частей: * Пути (модификаторы) до контейнера данных. * Пути до переменной относительно полученного контейнера данных. Например: {$^^author.name}, что значит: а) получить контейнер данных на 2 уровня выше (контейнеры данных образуют дерево, ак вы помните), чем текущий, б) из него получить переменную author, из которой вывести переменную name. Подробнее о [[dbe|Data Binding Expressions]].