====== Введение в шаблонную систему WACT ====== Первоначально, WACT (Web Application Component Toolkit ) - это другой фреймворк, как и Limb. Однако уже долгое время этот проект активно не развивается, и, чтобы хорошие идеи не пропадали зря, мы адаптировали некоторые его составляющие под свои нужды, в частности DBAL, VALIDATION и собственно сам шаблонизатор. Шаблонизатор WACT (далее просто WACT) - это очень мощный, легко расширяемый и быстрый инструмент php-разработчика. WACT позволяет легко и чисто разделять презентационную логику от логики приложения, при этом не требует много времени на первоначальное освоение. В рамках данного раздела мы рассмотрим основные элементы шаблонов WACT. ===== Пример шаблона ===== Newsline Main page

{$'Newsline'|uppercase}

{$date|date:'Y-m-d'}. {$title}
{$annotation|raw} more...
===== Основные элементы WACT шаблона ===== ==== Теги ==== В нашем примере: [...] [...] Теги обычно должны иметь закрывающий тег (как или ). :!: В версиях с 0.3 - по 0.4 включительно в WACT действовало правило обязательности сбалансированности шаблонов, то есть каждый тег должен иметь закрывающий тег. Правило закрытых тегов касалось как WACT-тегов, так и обычных HTML-тегов. В версии 0.5 это правило было отменено. Теги могут содержать один или несколько атрибутов. Например, тег содержит атрибуты **using** и **target**. Одним из основных атрибутов любого тега является атрибут **id**, который является обязательным. Даже если вы не указали данный атрибут, то компилятор шаблона сам присвоит тегу идентификатор. **Id** используется для того, чтобы иметь возможность найти тег и как-либо изменить его свойства или поведение в php-скрипте. К тегам могут применяться некоторые правила. Например, одни теги могут находиться только внутри других тегов, некоторые теги должны содержать обязательные атрибуты, некоторые атрибуты должны содержать только определенные значения и т.д. В большинстве случаев компилятор шаблонов самостоятельно проверяет правильность синтаксиса шаблона и выдает подробное описание ошибки, если она есть. WACT содержит достаточное большое количество тегов, плюс к этому, в Limb добавлены некоторые специфические теги, которые могут потребоваться при повседневной работе. Так что в большинстве случаев возможностей базового набора тегов вам должно хватить. ==== Выражения ==== Выражения (output expressions) используются для вывода каких-либо значений, например, переменных или обычных строк. Выражения в нашем примере: {$title} {$date|date:'Y-m-d'} {$annotation|raw} {$'Newsline'|uppercase} Значение, которое будет выведено при помощи выражения, может быть значением переменной, как в случае с {$title} и {$date}, так и константой, как в случае с {$'Newsline'|uppercase}. Выражения, стоящие в шаблонах - это по сути операции echo. В некоторых случаях, когда выражение является атрибутом тега, оно просто указывает на значение. По-умолчанию WACT применяет функцию htmlspecialchars для каждого выражения, если его не отметить при помощи фильтра raw (см. ниже). Подробно выражения описаны в разделе [[.expressions|"Выражения"]]. ==== Фильтры ==== Фильтры используются для модификации/форматирования значений, выводимых в выражениях. Выражения с фильрами в нашем примере: {$date|date:'Y-m-d'} {$annotation|raw} {$'Newsline'|uppercase} Использованы 3 фильтра: * uppercase - для перевода значения в верхний регистр * raw - для отмены применения htmlspecialchars к выводимому значению * date - для форматирования даты. Обычно фильтр представляет из себя враппер для какой-нибудь часто используемой функции php. Однако, ничего не мешает создавать свои уникальные фильтры, так как делать это достаточно просто. Подробно фильтры описаны в разделе [[.filters|"Фильтры"]]. ==== Предопределенные свойства внутри тегов ==== Иногда в шаблонах используются так называемые "Предопределенные свойства", то есть некие переменные, которые доступны внутри некоторых тегов. Хорошим примером является ListRowNumber, которое содержит номер текущий строки в списке: Вот пример шаблона, который использует значение ListRowNumber: {$ListRowNumber}. {$title}
Обычно выражения со свойствами тегов отличают от обычных выражений, которые выводят значения переменны при помощи символя двоеточния ":", например: {$:ListRowNumber}. {$title}
==== Дальнейшее чтение ==== * [[.important_details|"Компиляция и выполнение шаблона. Активные компоненты шаблона. Дерево контейнеров данных."]] - описывает кратко механизм работы WACT-шаблонизатора. Без прочтения этого раздела пользоваться WACT-ом нереально. * [[.how_to_run_wact_only|"Рендеринг WACT шаблона. Использование пакета WACT"]] - описывает кратко использование шаблонизатора без использования других пакетов Limb.