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 (модификаторы, массивы, циклы и пр. подсказки)

Модификаторы 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

You may use the Smarty logo according to the trademark notice.

For sponsorship, advertising, news or other inquiries, contact us at:

Sites Using Smarty

Имя атрибута Тип Обязателен По умолчанию Описание
from array Да n/a Массив, по которому надо пройтись
item string Да n/a Имя переменной, которая будет значением текущего елемента
key string Нет n/a Имя переменной, которая будет ключом текущего елемента
name string Нет n/a Название цикла foreach для доступа к его свойствам

Атрибуты from и item являются обязательными.

Параметр name цикла может состоять из букв, цифр и знака подчеркивания, как и переменные PHP.

Циклы могут быть вложенными при условии, что их имена будут уникальными.

Атрибут from , обычно являющийся массивом, определяет количество проходов цикла .

Блок выполняется в том случае, если в параметре from нет значений.

У циклов также есть собственные переменные, которые обрабатывают свойства. Доступ к ним можно получить таким образом: , где “ name ” — атрибут name функции .

Обратите внимание

Атрибут name необходим только в том случае, когда у вас есть необходимость обращаться к свойствам , в отличие от функции . Обращение к свойствам с неопределенным name не вызывает ошибки, но ведёт к непредсказуемым результатам.

Example 7.5. Атрибут item

Шаблон для отображения $myArray в виде ненумерованного списка

Результат выполнения данного примера:

Example 7.6. Пример работы атрибутов item и key

Шаблон для отображения $myArray в виде пар ключ/значение, как foreach в PHP.

Результат выполнения данного примера:

Example 7.7. с ассоциативным атрибутом item

Шаблон для отображения элементов $items , в котором $myId используется в URL’е

Результат выполнения данного примера:

Example 7.8. со вложенными item и key

В 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 >

Источник

Читайте также:  Кто вывел породу собаки лабрадор
Оцените статью