Preview
Preview - это облегчённый класс отображения шаблонов, расширяющий класс View .
Пространство имен: \
Расположение файла:lib/base.php
Визуализация шаблона preview
Класс Preview предлагает механизм для чрезвычайно легкого создания шаблонов, который просто вызывает некоторые выражения php, которые заключены в управляющие символы {~ ~}. Это полезно для стиля шаблона, такого как XML / HTML, haml или чего-нибудь подобного.
Давайте посмотрим на простой пример:
<div> <h1>My favorite books</h1> <ul> {~ foreach (@books as @id=>@book): ~} <li>{~ if (@book.starred): ~}<i class="icon-star"></i>{~ else: ~}<i class="icon-normal">{~ endif ~} <a href="{{ @BASE.@book[slug] }}">{{ @book.title }}</a> </li> {~ endforeach ~} </ul> </div>
Методы
build
Собрать разметку
string build ( string $node )
Этот метод строит php-код из заданной разметки, который используется позже в предварительно обработанном шаблоне.
Пример преобразования кода с токеном:
{{ @book.title | esc }}
в:
<?php echo $this->esc($book['title']); ?>
filter
Регистрация фильтра токенов
mixed filter ( [ string $key = NULL [, string $func = NULL ] )
Вы можете использовать этот метод для добавления собственного фильтра токенов шаблона, например
{{ @content | myfilter }}
\Preview::instance()->filter('badwords','\Helper::instance()->badwords');
class Helper extends \Prefab { function badwords($val) { $bad_words = array("badword","jerk","damn"); $replacement_words = array("@#$@#", "j&*%", "da*@"); return str_ireplace($bad_words, $replacement_words, $val); } }
Теперь вы можете использовать
{{ @user_comment | badwords }}
для фильтрации user_comment для BADWORDS. Кроме того , можно объединить несколько фильтров:
{{ @user_comment | badwords, raw }}
Когда функция вызывается без каких-либо параметров, она просто возвращает массив всех зарегистрированных имен фильтров. Когда функция вызывается с параметром, $key но без параметра $func, она возвращает зарегистрированную строку функции.
render
Визуализиция и выдача шаблона с заданным именем файла
string render ( string $file [, string $mime = 'text/html' [, array $hive = NULL [, int $ttl = 0 ]]] )
Аргумент $file содержит путь к файлу, который находится в пределах каких - либо определенных каталогов F3 в UI. Помните, что для вашего удобства пользовательский интерфейс может иметь несколько путей.
Фактически, метод render() сначала пытается загрузить указанный вами шаблон из временной папки TEMP, действующей как файловый кэш для скомпилированных шаблонов. Указанный файл шаблона загружается только при необходимости: F3 определяет, была ли сохранена более новая версия файла шаблона, и затем он создает файл представления на основе php и только после этого снова отображает представление php.
После визуализации F3 экранирует содержимое в соответствии с системной переменной ESCAPE и устанавливает соответствующее Content-Type значение HTTP-заголовка. Если вы хотите, чтобы ответ был возвращен как содержимое JSON, XML или электронной почты, просто измените $mime параметр типа в соответствии с вашими потребностями. (кодировка содержимого определяется системной переменной ENCODING )
Аргумент $hive позволяет использовать явный набор переменных для этого шаблона. По умолчанию обработанный шаблон имеет доступ ко всему улью F3 (hive) со всеми его переменными.
Аргумент $ttl определяет в секундах время жизни в кэше. Когда $ttl задано F3 сохранит скомпилированное представление в кэше. При следующем запросе, если время, указанное в $ttl, прошло, скомпилированное представление будет перестроено из шаблона и снова сохранено в кэше для другого цикла.
Примеры:
echo $tmpl->render('layout.html'); // assumes layout.html is in the UI folder
$flow = $tmpl->render('widgets/tweeter-feeds.html', 'application/json', NULL, 300 ); // cache for 5 minutes
resolve
Рендеринг строки шаблона
string resolve ( string $str [, array $hive = NULL ] )
Пример:
$tmpl = \Preview::instance(); $f3->set('title','<b>F3 rocks</b>'); $content = '<p>{{ @title | esc }}</p>'; echo $tmpl->resolve($content); // return: <p>&lt;b&gt;F3 rocks</b&gt;</p>
token
Преобразовать токен в переменную
string token ( string $str )
Пример:
echo $template->token ('My {{@color}} car looks nice'); // returns the string 'My $color car looks nice'