- Шаблонизатор Smarty
- Вывод переменных
- Задание значений переменных
- Значение по умолчанию
- Применение строковых функций
- Глобальные переменные PHP
- Управляющие конструкции
- If, else
- Switch Case
- Циклы
- Foreach
- Встроенные функции Smarty
- Include
- literal
- Smarty (модификаторы, массивы, циклы и пр. подсказки)
- Модификаторы Smarty:
- Get Smarty
- Resources
- Donate
- Sites Using Smarty
- Advertisement
- Обратите внимание
- .index
- Smarty конспект
Шаблонизатор Smarty
Smarty это компилирующий обработчик шаблонов для PHP позволяющий отделить логику и HTML-верстку веб-приложения.
Скачать библиотеку и посмотреть документацию можно на https://www.smarty.net/download
Содержание архива smarty-3.1.32.zip переносим в директорию /smarty/ в корень сайта, в index.php подключаем библиотеку и задаем переменные шаблона.
Далее нужно создать директорию /templates/ , а в ней файл шаблона index.tpl .
В шаблонах Smarty применяются следующие конструкции:
Вывод переменных
В PHP эта запись аналогична:
Также можно вывести значение массива по ключу.
В PHP это выглядело бы так:
Задание значений переменных
Smarty позволяет задавать значения переменных прямо в шаблоне с помощью конструкции assign .
Поддерживаются арифметические выражения и катенация:
Катенация переменной с текстом:
Значение по умолчанию
Если переменная не существует или пуста, можно задать текст который будет выводится вместо нее.
Применение строковых функций
Переменные можно модифицировать встроенными функции, например, перевести символы в верхний регистр.
Допустимо комбинировать сразу несколько функций:
lower | Переводит строку в нижний регистр |
upper | Переводит строку в верхний регистр |
capitalize | Преобразовывает первые буквы каждого слова в заглавные |
strip | Заменяет все повторяющиеся пробелы |
nl2br | Заменяет перевод строки в тэг |
strip_tags | Удаляет html тэги |
escape | Используется для кодирования спецсимволов |
Глобальные переменные PHP
В шаблонах доступны все глобальные переменные PHP, получить значение можно через объект $smarty .
$_GET | |
$_POST | |
$_SESSION | |
$_COOCIES | |
$_REQUEST |
Управляющие конструкции
Как и в PHP, в Smarty доступны управляющие конструкции, операторы и необходимые функции.
If, else
Switch Case
Его нет, но вместо него можно использовать конструкцию if , else if , else .
Циклы
Foreach
Конструкция fereach своеобразная, в примере идет перебор массива $array_3 и вывод значения по ключу name .
Встроенные функции Smarty
Полный список на smarty.net
Include
Подключает файл шаблона в директории /templates/ .
literal
Вставки JS и CSS нужно обворачивать тегами
Источник
Smarty (модификаторы, массивы, циклы и пр. подсказки)
Модификаторы Smarty:
upper, lower, capitalize:
Описание: возвращает строку, в которой все буквенные символы переведены в верхний или нижний регистр или заглавные соответственно
truncate:
Описание: обрезает строку. Можно задать длину строки для обрезания, чем заканчивается обрезанная часть и обрезать ли слова.
Two Sisters Reunite after Eighteen Years at Checkout Counter.
Two Sisters Reunite after Eighteen Years at Checkout Counter.
Two Sisters Reunite after.
Two Sisters Reunite after
Two Sisters Reunite after—
Two Sisters Reunite after Eigh
Two Sisters Reunite after E.
Two Sisters Re..ckout Counter.
replace:
Описание: передает для замены строку или массив (значения через запятую). Если на что менять не задано, то просто удаляет совпадения
Данный пример удалит пробелы:
regex_replace:
Описание: поиск и замена по регулярному выражению
Данный пример очистит номер телефона от лишних символов:
mb_substr:
удалить первый символ переменной
удалить последний символ переменной
strip_tags:
Описание: Удаляет теги html разметки
Blind Woman Gets New Kidney from Dad she Hasn’t Seen in years.
Blind Woman Gets New Kidney from Dad she Hasn’t Seen in years .
Кодирование-декодирование URL:
Конкатенация (добавление к переменной):
Подсчитать кол-во символов (параграфов, предложений, слов):
Аналогично: count_paragraphs, count_sentences и count_words
Отрезать все, что после символа &:
Проверка вхождения в $text подстроки $sub:
Первые n-символов в переменной:
Текущая дата:
Завтра (+ 1 день):
Заменяет все переносы строк на тэг
в заданной переменной:
Добавляет пробел между разрядами крупных чисел:
Например 65000 приводится к виду 65 000.
Напр. отрезать символы дальше сотых:
Экранирование:
Еще больше полезностей из Smarty:
Информация о переменной:
Как закомментировать?
Как экранировать код в котором встречаются <>:
Как создать внутреннюю переменную smarty (напр $var) и присвоить ей значение:
Использование условий if:
Как посчитать количество элементов в массиве:
in_array:
Описание: Проверяет наличие значения переменной $module в массиве
Пример 2: Проверка вхождения переменной $pname в массив get-параметров v1
Как организовать цикл for:
Например нужен такой цикл: for($i=1;$i
Прервать цикл foreach:
- Более сложная задача — вывести записи из цикла отдельными блоками по 4 шт:
Вывод первых 3 свойств через срез массива:
Где: 0 — начало среза, 3 — кол-во элементов
Преобразовать строку в массив $widgets_ids по одинаковому разделителю «,»:
Записать значения id в массив $labels_ids:
Проверка различия между массивами:
Ф-я array_diff($array1, $array2) даст те элементы, которые есть в массиве array1, но нет в массиве array2
Рандомное число:
Получение GET-параметра:
Например из URL типа site.ru?utm_text=текст
Отображение параметра «page» из формы ($_POST[‘page’])
Отображение значения cookie «name» ($_COOKIE[‘name’])
Отображение серверной переменной «SERVER_NAME» ($_SERVER[‘SERVER_NAME’])
Адрес текущей страницы:
Адрес текущей страницы без GET-параметров:
Отображение переменной системного окружения «PATH»:
Получить ID сессии:
Отображение переменной «name» из смешанных get/post/cookies/server/env
Определение разрешения файла:
Источник
Get Smarty
Resources
Donate
You may use the Smarty logo according to the trademark notice.
For sponsorship, advertising, news or other inquiries, contact us at:
Sites Using Smarty
Advertisement
Имя атрибута | Тип | Обязателен | По умолчанию | Описание |
---|---|---|---|---|
from | array | Да | n/a | Массив, по которому надо пройтись |
item | string | Да | n/a | Имя переменной, которая будет значением текущего елемента |
key | string | Нет | n/a | Имя переменной, которая будет ключом текущего елемента |
name | string | Нет | n/a | Название цикла foreach для доступа к его свойствам |
Атрибуты from и item являются обязательными.
Параметр name цикла
Циклы
Атрибут from , обычно являющийся массивом, определяет количество проходов цикла
Блок
У циклов
Обратите внимание
Атрибут name необходим только в том случае, когда у вас есть необходимость обращаться к свойствам
Example 7.5. Атрибут item
Шаблон для отображения $myArray в виде ненумерованного списка
Результат выполнения данного примера:
Example 7.6. Пример работы атрибутов item и key
Шаблон для отображения $myArray в виде пар ключ/значение, как foreach в PHP.
Результат выполнения данного примера:
Example 7.7.
Шаблон для отображения элементов $items , в котором $myId используется в URL’е
Результат выполнения данного примера:
Example 7.8.
В Smarty передан такой массив, ключ которого содержит ключ для каждого перебираемого значения.
Шаблон для отображения $contact .
Результат выполнения данного примера:
Example 7.9. Пример использования
Пример работы с базой данных (при помощи PEAR или ADODB) в скрипте поиска, результаты которого передаются в Smarty.
Шаблон отобразит сообщение “ Ничего не найдено ” при помощи
.index
index contains the current array index, starting with zero.
Источник
Smarty конспект
В smarty предусмотрено комментирование кода?
Как экранировать код в котором встречаются <>
Как посчитать количество элементов в массиве
Как создать внутреннюю переменную smarty
Значение переменной по-умолчанию
Как сделать чтобы смарти вычислил значение переменной при присвоении
Полезные строковые модификаторы
Как организовать цикл for
Как в цикле foreach определить первый и последний элемент
Использование условий if
Передача параметров вызываемому шаблону
Включение шаблона можно перенаправить в переменную
Управление кэшированием вложеных шаблонов.
Не кэшировать шаблон
Кэшировать на 500 секунд
Использование захватов (capture)
Смарти умеет вычислять!
Обратите внимание, результат можно отформатировать с помощью printf-like шаблонов.
Также для форматирования в smarty есть отдельный модификатор
Вообще с помощью math можно юзать основные нативные вычисляющие функции php.
Случайное число (random)
Дополнительные вспомогательные операции
% mod $a mod $b modulus %
is [not] div by $a is not div by 4 divisible by $a % $b == 0
is [not] even $a is not even [not] an even number (unary) $a % 2 == 0
is [not] even by $a is not even by $b grouping level [not] even ($a / $b) % 2 == 0
is [not] odd $a is not odd [not] an odd number (unary) $a % 2 != 0
is [not] odd by $a is not odd by $b [not] an odd grouping ($a / $b) % 2 != 0
#модуль, определение четности, нечетности, кратности
То есть из smarty мы можем обратиться к массиву $_SERVER и $_GET.
Например, определим, находимся ли мы сейчас на главной странице
Отладка в smarty
Консоль отладки, показывает все переданные данные скриптом в smarty
Объекты (классы) в smarty
// создаем объект класса MyObject
class MyObject <
function dummy ( $params , & $smarty ) <
return ‘method!’ ;
>
>
$myobj = new MyObject ;
// регистрируем объект по ссылке
$smarty -> register_object ( ‘foobar’ , $myobj ) ;
// ограничиваем доступ к методам
$smarty -> register_object ( ‘foobar’ , $myobj , array ( ‘meth1’ , ‘meth2’ , ‘prop1’ ) ) ;
// или так, если без ограничений
$smarty -> register_object ( ‘foobar’ , $myobj , null , false ) ;
// Используем by_ref для объектов
$smarty -> assign_by_ref ( ‘myobj’ , $myobj ) ;
$smarty -> display ( ‘index.tpl’ ) ;
?>
<* можем поймать вывод метода *>
< foobar- >meth1 p1 = ‘foo’ p2 = $bar assign = ‘output’ >
Метод вернул
Smarty 3
В третей версии появилось несколько новых плюшек
Новый синтаксис foreach
Для каждого значения итерации доступны модификаторы:
$name@index :индекс массива, обыно 0+
$name@iteration :номер итерации, 1+
$name@key :значение ключа (работает с синтаксисом foreach $res as $v)
$name@last, $name@first :bool, если элемент первый или последний
$name@show :bool, выводилось ли ранее значение элемента текущей итерации
$name@total :количество итераций в данном foreach
Добавлен
Создание объекта-шаблона и выполнение отдельных операций с ним
Объект данных (контекст для смарти)
Возможность указать поток в назначении шаблона
Обработка шаблона из строки
Наследование в шаблонах
Extends должен быть первой строкой в файле. Поддерживается вложенные лейауты.
Блоки, которые будут переопределять контент в родительском шаблоне.
Блоки поддерживают вложенность. Extend
append — добавит содержимое в конец наследуемого блока
hide — не будет показывать родительский блок, если дочерний не определен
В блоках можно также использовать контент из родительского блока <$smarty.block.parent>
, или дочернего <$smarty.block.child>.
// output of $smarty->display(‘child.tpl’);
html >
head >
title > My Child Title title >
head >
body >
My Child Body
body >
html >
Источник