Как работает встроенная система шаблонизации в FOC:CSV
Краткий мануал по системе шаблонов, доступных в модуле FOC:CSV
Привет ребята! В одном из прошлых анонсов я писал что в модуле импорта/экспорта завезли поддержку «мультиколоночного преобразователя«, который управляется элементарной системой шаблонизации.
За таким сложным словом стоит весьма простое определение – мы берём контент нескольких колонок CSV, определённым образом обрабатываем их и складываем результат в одну ячейку.
На текущий момент, система шаблонизации поддерживает интерполяцию переменных, простые циклы и использование нескольких разрешённых функций.
В этом посте мы рассмотрим каждую из этих возможностей подробнее. А в конце я покажу как можно использовать шаблонизатор в своих проектах (хотя я не рекомендую этого делать — он очень ограничен)
Переменные
Для вывода значения переменной в шаблоне используется классическая конструкция – {{ VARIABLE }}. Если в VARIABLE скалярное значение, т.е. например, текст или число, то оно будет выведено. В случае, если вы пытаетесь интерполировать массив, будет выведено его JSON представление.
Циклы
Циклы используются для обхода массивов и имеют следующий синтаксис:
[@each (value,index) <= source]
// тело цикла, например {{ index }}
[@endeach]
// либо
[@each value <= source]
// тело цикла, например {{ loop.index }}
[@endeach]
Индексация начинается с 1, и доступна либо во второй переменной объявления цикла (в примере выше - index), либо через специальную переменную - loop.index.
Функции
Синтаксис функций имеет вид:
[@fn FUNCTION_NAME | @argument] или [@fn FUNCTION_NAME | "Value"]
Обратите внимание, синтаксис с @ используется для подстановки значения переменной, в то же время в кавычках можно передавать своё значение. Например:
[@fn date | "Y-m-d"] будет обработано как date("Y-m-d")
[@fn md5 | @variable] будет обработано как md5($variables['variable'])
Список доступных для использования функций:
Список разрешённых функций находится в защищенном свойстве enabled_functions, добавление своих функций возможно только с помощью OCMod.
- nl2br
- date
- htmlspecialchars
- htmlentities
- html_entity_decode
- md5
- lcfirst
- ucfirst
- strtolower
- strtoupper
- ucwords
- trim
- time
- microtime
- money_format
- number_format
Использование шаблонизатора в своих проектах
Сам по себе шаблонизатор представляет скорее сильно ограниченную DSL абстракцию над PHP, реализованную с помощью регулярных выражений, поэтому вряд-ли вам стоит брать его в свой проект, если подразумевается рендерить что-то сложное.
Однако, если вы все же решили использовать FOCSimpleTemplater, вам нужно всего лишь подключить этот класс (system/library/FocSimpleTemplater.php), например, используя $this->load->library('FocSimpleTemplater'), и вызвать статический метод render, первым аргументом которого является шаблон, а вторым - хэш с переменными:
Приведённый выше код сгенерирует такое представление:
Как видите, в шаблонизации FOC:CSV нет ничего сложного, она изначально разрабатывалась чтобы быть максимально простой в использовании и не иметь никаких зависимостей.