You can edit almost every page by Creating an account. Otherwise, see the FAQ.

HTML::Template

Материал из EverybodyWiki Bios & Wiki
Перейти к:навигация, поиск

Ошибка скрипта: Модуля «Unsubst» не существует. 

Ошибка скрипта: Модуля «Unsubst» не существует. HTML::Template — небольшая по объёму Perl-библиотека для работы с шаблонами, позволяющая разделять код, данные и представление.

Возможности. Преимущества. Специфика[править]

В HTML::Template используется свой мини-язык, по написанию схожий с HTML-тегами.

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

<html>
<head><title> <TMPL_VAR NAME="title"> </title></head>
<body>
  Вывод списка:
  <ul>
  <TMPL_LOOP NAME="items">
    <li> <TMPL_VAR NAME="item"> </li>
  </TMPL_LOOP>
  </ul>
</body>
</html>

И вызывающий его скрипт:

#!/usr/bin/perl
use HTML::Template;

my $template = HTML::Template->new(filename => 'test.tmpl');

$template->param(title => "Заголовок страницы");
$template->param(items => [
   {item => 'один'},
   {item => 'два'},
   {item => 'три'},
]);
print "Content-type: text/html\n\n";
print $template->output();
  • Может кэшировать шаблоны в память, общую память (shared memory) или на диск.

Недостатки[править]

  • Не позволяет обращаться напрямую ко вложенным структурам, таким как хэши массивов и тому подобным.
  • Шаблоны можно вкладывать один в другой по схемам "сверху вниз" и "снаружи внутрь". Строить шаблоны "изнутри наружу" нельзя.
  • Переменным нельзя присваивать значения, и вообще, производить с ними какие-либо операции, с них можно только считывать. Из-за этого не получится реализовать шаблонную логику уровня сложности выше простого.
  • Из циклов присутствует только foreach, что позволяет вывести только последовательный список.
  • Если внутри цикла присутствует переменная с таким же именем, как и вне цикла, то к последней изнутри цикла обратиться нельзя.
  • Цикл не позволяет производить итерацию по хэшам.
  • HTML::Template не позволяет обращаться к методам объектов.

Теги[править]

HTML::Template обладает следующим набором тегов.

TMPL_VAR[править]

<TMPL_VAR NAME="PARAMETER_NAME">

Самый простой тег. Выводит значение переменной, значение которой вы присвоили через $template->param(PARAMETER_NAME => «VALUE»).

Позволяет делать HTML-экранирование, при помощи ESCAPE=HTML:

<input name=param type=text value="<TMPL_VAR ESCAPE=HTML NAME="PARAM">">

Позволяет делать URL-экранирование ESCAPE=URL, обрабатывать строки, которые впоследствии будут строками кода JavaScript ESCAPE=JS. Позволяет также устанавливать значение переменной по умолчанию DEFAULT='SOME VALUE'.

TMPL_LOOP[править]

<TMPL_LOOP NAME="LOOP_NAME"> ... </TMPL_LOOP> 

Цикл по массиву. Переменная LOOP_NAME должна содержать массив хэшей.

<TMPL_LOOP> могут быть вложенными.

По умолчанию, переменные снаружи цикла не видны внутри него. Для изменения этого свойства следует использовать опцию global_vars в конструкторе объекта.

TMPL_INCLUDE[править]

<TMPL_INCLUDE NAME="filename.tmpl">

Вставляет на место этого тега указанный шаблон.

TMPL_IF[править]

<TMPL_IF NAME="BOOL">
  Some text that only gets displayed if BOOL is true!
</TMPL_IF>

TMPL_ELSE[править]

<TMPL_IF BOOL>
  Some text that is included only if BOOL is true
<TMPL_ELSE>
  Some text that is included only if BOOL is false
</TMPL_IF>

TMPL_UNLESS[править]

 <TMPL_UNLESS BOOL>
   Some text that is output only if BOOL is FALSE.
 <TMPL_ELSE>
   Some text that is output only if BOOL is TRUE.
 </TMPL_UNLESS>

Тег, обратный по действию тегу <TMPL_IF>

Ссылки[править]

Шаблон:Ambox


This article "HTML::Template" is from Wikipedia. The list of its authors can be seen in its historical and/or the page Edithistory:HTML::Template. Articles copied from Draft Namespace on Wikipedia could be seen on the Draft Namespace of Wikipedia and not main one.



Read or create/edit this page in another language[править]