Pull to refresh

Шаблонизатор PHPTAL

Reading time3 min
Views892
У данного шаблонизатора подход, который отличается от прочих типов шаблонизаторов. И это не может не заинтересовать.
По запросу PHPTAL хабр выдает только одну ссылку,
TAL — это Атрибутивный Язык Шаблонов. Он так называется, потому что команды языка являются атрибутами тегов.

Логика нативных шаблонов

В нативных шаблонах за основу берется PHP или какой-то другой язык, а HTML получается вследствии его работы.
  1. <table>
  2. <?foreach($myarray as $myitem) :?>
  3.   <tr><td><?=$myitem?></td>
  4. <?endforeach;?>
  5. </table>
HTML затерялся где-то в дебрях языка. Это все плохо читабельно. Может порождать трудно обнаруживаемые ошибки. Например такие
  1. <div><?php if ($flag):?>текст</div><?endif;?>
Кстати говоря, потому смарти и получил такое распространение, что он не меняет логику PHP, а просто немного упрощает синтаксис.

Логика TAL

Вот тот же пример цикла, написанный на PHPTAL
  1. <table>
  2.  <tr tal:repeat="myitem myarray">
  3.     <td tal:content="myitem">Текст, который будет заменен значением myitem</td>
  4.     <td tal:replace="">Пример 1</td>
  5.     <td tal:replace="">Пример 2</td>
  6.     <td tal:replace="">Пример 3</td>
  7.  </tr>
  8. </table>
* This source code was highlighted with Source Code Highlighter.
Его плюсы:
  • Такой шаблон будет корректно отображен в браузере с примерами «Пример 1», «Пример 2» и «Пример 3», поэтому можно продемонстрировать его клиенту даже на той стадии, когда код, необходимый для получения значений 'myarray', еще не существует.
  • Очень краткий код, гораздо удобнее, чем при использовании нативных и смарти шаблонизаторов.
  • Весь код пишем прямо в шаблоне, не надо создавать дополнительный файл с логикой, как, например, в блочных шаблонизаторах или если вы будете писать отдельные функции, а потом встраивать в HTML просто переменные.
При таком подходе Вы работаете с тегами HTML. Вы указываете, какой тег должен повториться несколько раз в цикле, а в какой тег необходимо вывести информацию.
Пространство имен TAL
В порядке их обработки шаблонизатором:
  1. tal:define — Этот атрибут объявляет одну или более переменных, которые затем могут быть использованы в шаблоне
  2. tal:condition — Тег и его содержимое будет отображено только тогда, когда условие выполняется.
  3. tal:repeat — Этот атрибут служит для циклов над перечисляемыми данными
  4. tal:replace — Используя этот атрибут, можно заменить весь элемент целиком (включая открывающий и закрывающий тег) на заданную строку, или на пустую, если значение не задано.
  5. tal:content — Значение этого атрибута станет текстом внутри тега.
  6. tal:attributes — С помощью tal:attributes можно устанавливать на лету значения атрибутов тега.
  7. tal:omit-tag — Этот атрибут заставит парсер PHPTAL проигнорировать открывающий и закрывающий теги элемента и вывести только его содержимое.
Пространство имен METAL (макросы)
По своей сути макросы — это обычные шаблоны, которые могут быть многократно вставлены в другие шаблоны.
  1. metal:define-macro — Этот атрибут объявляет макрос
  2. metal:use-macro — Этот атрибут вызывает макрос и включает результат его выполнения в текущий шаблон в то место, откуда он вызван
  3. metal:define-slot — Этот атрибут должен быть объявлен внутри тега, объявляющего макрос (metal:define-macro).
  4. metal:fill-slot — Этот атрибут может быть использован только внутри элемента с metal:use-macro.
Макросы — на основе них реализуется include и наследование
PHPTALES
Cинтаксис выражений. позволяет, к примеру, писать php код внутри атрибутов
tal:content=«php:strtolower($value)»
  1. path: — используется по-умолчанию. пример: tal:content=«data/user/name»
  2. string: — значение разбирается как строка. пример: tal:replace=«string:this is a $$100 page»
  3. not: — используется только в tal:condition
  4. exists: — аналог php isset()
  5. php: — синтаксис php

Пространство имен I18N (интернализация)
Инструмент, для создания мультиязычных шаблонов
  1. i18n:translate — Этот атрибут определяет текст, который должен быть переведен с помощью системы перевода, встроенной в PHPTAL.
  2. i18n:attributes — Задает, какие атрибуты должны быть переведены
  3. i18n:name — В сам перевод можно динамически посдтавлять значения переменных.
Расширение возможностей PHPTAL
PHPTAL позволяет программисту добавлять в него триггеры, фильтры, phptales, а также просто передавать в него объекты, методы которых затем вызывать в шаблоне.Это открывает огромные возможности по расширению шаблонизатора, а также возможности внедрения в Ваш фреймворк.
Ссылки на первоисточники: официальный сайт | русский перевод документации
Tags:
Hubs:
-2
Comments17

Articles

Change theme settings