Робота з шаблонами, використання html-template з cgi-скриптами

Однією з частих завдань, що стоять перед Web-програмістом є відділення логіки отримання даних від формату представлення даних. Для вирішення такого завдання часто використовують шаблони html-документів, які при роботі програм заповнюються даними. Це дозволяє виконувати верстку сторінок іншій людині, або змінювати зовнішній вигляд сторінок не змінюючи саму програму.

CPAN надає програмісту вибір різних засобів роботи з шаблонами. Серед них: HTML :: Template, Text :: Template, Template toolkit. Як правило методика роботи з усіма цими модулями однакова. Програміст створює об'єкт, який вказує на потрібний шаблон, потім формується набір даних, для заповнення шаблону і виконується саме заповнення шаблону, а результат цього повертається у вигляді готової HTML сторінки. Давайте докладніше розглянемо модуль HTML :: Template.

HTML :: Template також дозволяє програмісту контролювати роботу з шаблонами. Наприклад, при використанні даного модуля в поєднанні з mod_perl можна використовувати кешування розібраних шаблонів і використовувати результати в різних скриптах. Крім кешування програміст може задати фільтри, які будуть проводити обробку згенерованого тексту. Всі параметри шаблонів задаються при створенні об'єкта, що описує шаблон.

створення об'єкта

Ось приклад створення об'єкту з шаблону що знаходиться в файлі template.tmpl, при цьому задається, що імена шаблонів будуть чутливі до регістру букв:

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


Якщо в системі встановлена ​​змінна оточення $ HTML_TEMPLATE_ROOT, і при шаблон заданий відносним ім'ям файлу, то до імені буде додано значення $ HTML_TEMPLATE_ROOT.

отримання результату


Для отримання заповненого шаблону просто викличте функцію output для потрібного об'єкту. При цьому повертається згенерований текст. При цьому стан об'єкта шаблону не змінюється.

Оскільки дуже часто результат роботи записується в файл, то для того, щоб зменшити завантаження, ви за допомогою параметра print_to можете передати функції output дескриптор файлу, в який буде відбуватися видача результатів. Наприклад, ось так:

$ Template-> output (print_to => * STDOUT);

вставка змінних


Для вставки даних в шаблон необхідно заповнити його за допомогою функції param. Функції param передається хеш даних у вигляді ключ => значення. Для складних структур даних, наприклад для вкладених циклів, значенням можуть бути посилання на списки і інші хеш-кодування. Ось приклад простого використання модуля:

se HTML :: Template;
# Відкриваємо файл з шаблоном
my $ template = HTML :: Template-> new (filename => 'test.tmpl');
# Заповнюємо шаблон параметрами
$ Template-> param (HOME => $ ENV, PATH => $ ENV);
# Посилаємо заголовок Content-Type
print "Content-Type: text / html \ n \ n";
# Видаємо готовий результат
print $ template-> output;


ля використання в шаблоні змінної з ім'ям VARNAME використовується конструкція . Значення поміщене в хеш за допомогою функції param поміщається на місце даного тега. При цьому у нас виходить документ не повністю відповідає стандарту HTML. Якщо ви турбуєтеся про правильність синтаксису вашого документа, то замість даного тега можна використовувати наступну форму: . Вона працює також, як і попередня, але не порушує правильності HTML документа. Обидві ці форми можна використовувати всередині інших тегів, наприклад так:

">.

Обробка виведених змінних може контролюватися параметром тега з ім'ям ESCAPE. Допустимими значеннями є HTML і URL, при цьому відбувається перетворення символів, не дозволених в даному контексті.

умовні оператори


Інший часто респонденти користуються послугами конструкцією є умова. Воно має форму дані 1дані 2. При цьому Дані 1 з'являться в результаті тільки, якщо змінна з ім'ям ІМЯ_УПРАВЛЯЮЩЕГО_ПАРАМЕТРА матиме справжнє значення, в іншому випадку в результаті з'являться Дані 2. Модуль допускає використання тільки однієї гілки умови, не використовуючи . Заповнення змінної відбувається як завжди.

Протилежних за дією тегом є тег . Він має синтаксис дані і вставляє Дані тільки якщо змінна ІМЯ_УПРАВЛЯЮЩЕГО_ПАРАМЕТРА має помилкове значення або взагалі не визначена.

Функція param може бути використана також для отримання значення зазначеного параметра. Для цього просто викличте функцію з ім'ям потрібного параметра.

оператор циклу


Важливим тегом є тег, що позначає цикл. Він має следущий синтаксис: повторювана частина. Мінлива LOOP_NAME повинна бути посиланням на список даних. У цьому списку можуть зберігається і просто значення, і посилання на інші хеші даних, що дозволяє будувати вкладені конструкції, як в наступному прикладі.

Якщо ми в нашому шаблоні напишемо наприклад таку конструкцію








ім'я: Посада:

Схожі статті