Инструменты пользователя

Инструменты сайта


limb3:ru:packages:wact:intro

Введение в шаблонную систему WACT

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

Шаблонизатор WACT (далее просто WACT) - это очень мощный, легко расширяемый и быстрый инструмент php-разработчика. WACT позволяет легко и чисто разделять презентационную логику от логики приложения, при этом не требует много времени на первоначальное освоение.

В рамках данного раздела мы рассмотрим основные элементы шаблонов WACT.

Пример шаблона

<html>
<head>
  <title>Newsline</title>
  <meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
</head>
<body>
<a href='/'>Main page</a>
 
<h1>{$'Newsline'|uppercase}</h1>
 
<fetch using="src/fetcher/SpecialNewsFetcher" target="news" />
 
<list:LIST id="news">
  <dl>
  <list:ITEM>
    <dt>{$date|date:'Y-m-d'}. {$title}</dt>
    <dd>
      {$annotation|raw}
      <core:optional for='content'>
       <a href='/news/detail/{$id}'>more...</a>
      </core:optional>
    </dd>
  </list:ITEM>
  </dl>
</list:LIST>
 
 </body>
</html>

Основные элементы WACT шаблона

Теги

В нашем примере:

<fetch using="src/fetcher/SpecialNewsFetcher" target="news" />
 
<list:list>[...]</list:list>
 
<core:optional for='content'>
[...]
</core:optional>

Теги обычно должны иметь закрывающий тег (как <list:list> или <fetch>).

:!: В версиях с 0.3 - по 0.4 включительно в WACT действовало правило обязательности сбалансированности шаблонов, то есть каждый тег должен иметь закрывающий тег. Правило закрытых тегов касалось как WACT-тегов, так и обычных HTML-тегов. В версии 0.5 это правило было отменено.

Теги могут содержать один или несколько атрибутов. Например, <fetch> тег содержит атрибуты 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 (см. ниже).

Подробно выражения описаны в разделе "Выражения".

Фильтры

Фильтры используются для модификации/форматирования значений, выводимых в выражениях.

Выражения с фильрами в нашем примере:

  {$date|date:'Y-m-d'}
  {$annotation|raw}
  {$'Newsline'|uppercase}

Использованы 3 фильтра:

  • uppercase - для перевода значения в верхний регистр
  • raw - для отмены применения htmlspecialchars к выводимому значению
  • date - для форматирования даты.

Обычно фильтр представляет из себя враппер для какой-нибудь часто используемой функции php. Однако, ничего не мешает создавать свои уникальные фильтры, так как делать это достаточно просто.

Подробно фильтры описаны в разделе "Фильтры".

Предопределенные свойства внутри тегов

Иногда в шаблонах используются так называемые «Предопределенные свойства», то есть некие переменные, которые доступны внутри некоторых тегов.

Хорошим примером является ListRowNumber, которое содержит номер текущий строки в списке:

Вот пример шаблона, который использует значение ListRowNumber:

<list:list id="mylist">
  <list:item>
   {$ListRowNumber}. {$title}<br/>
  <list:item>
</list:list>

Обычно выражения со свойствами тегов отличают от обычных выражений, которые выводят значения переменны при помощи символя двоеточния «:», например:

<list:list id="mylist">
  <list:item>
   {$:ListRowNumber}. {$title}<br/>
  <list:item>
</list:list>

Дальнейшее чтение

Обсуждение

Ваш комментарий. Вики-синтаксис разрешён:
   _  __   _  __  ____   ___    ____
  / |/ /  / |/ / /_  /  / _ )  / __/
 /    /  /    /   / /_ / _  | / _/  
/_/|_/  /_/|_/   /___//____/ /___/
 
limb3/ru/packages/wact/intro.txt · Последние изменения: 2010/11/10 10:02 (внешнее изменение)