What is Smarty?
Why use it?
Use Cases and Work Flow
Syntax Comparison
Template Inheritance
Best Practices
Crash Course
You may use the Smarty logo according to the trademark notice.
For sponsorship, advertising, news or other inquiries, contact us at:
Table of Contents
Модификаторы переменных могут быть прмменены к
переменным,
пользовательским функциям
или строкам. Для их применения надо после модифицируемого значения
указать символ |
(вертикальная черта) и название модификатора.
Так же модификаторы могут принимать параметры, которые влияют на их поведение.
Эти параметры следуют за названием модификатора и разделяются
:
(двоеточием). Кроме того, все функции PHP
могут быть использованы в качестве модификаторов (об этом дальше)
и модификаторы можно
комбинировать.
Example 5.1. Примеры модификаторов
{* применение модификатора к переменной *} {$title|upper} {* модификатор с параметрами *} {$title|truncate:40:'...'} {* применение модификатора к аргументу функции *} {html_table loop=$myvar|upper} {* с параметрами *} {html_table loop=$myvar|truncate:40:'...'} {* применение модификатора к строке *} {'foobar'|upper} {* использование date_format для форматирования текущей даты *} {$smarty.now|date_format:"%Y/%m/%d"} {* применение модификатора к функции *} {mailto|upper address='smarty@example.com'} {* использование функции PHP str_repeat *} {'='|str_repeat:80} {* функция PHP count *} {$myArray|@count} {* функция PHP shuffle, применяемая к IP адресу сервера *} {$smarty.server.SERVER_ADDR|shuffle} (* это приведет в верхний регистр букв и обрежет пробелы у всех элементов массива *} <select name="name_id"> {html_options output=$myArray|upper|truncate:20} </select>
Если модификатор применяется к переменной-массиву, то он будет применен к
каждому элементу массива. Если же требуется применить модификатор к массиву,
как к переменной, то необходимо перед именем модификатора указать символ
@
.
{$articleTitle|@count}
- выведет количество елементов
в массиве $articleTitle
используя стандартную
функцию PHP
count()
в качестве модификатора.
Модификаторы автоматически загружаются из директории $plugins_dir
или могут быть явно зарегистрированы при помощи функции
register_modifier()
;
это удобно для использования функции как в PHP-коде, так и в шаблоне.
Любая PHP-функция может быть использована в качестве модификатора. Тем не менее, использование PHP-функций в качестве модификаторов имеет две маленькие "ловушки":
Во-первых, иногда порядок аргументов функции не самый удобный.
Форматирование $foo
при помощи
{"%2.f"|sprintf:$float}
- это рабочий, но
не совсем удобный вариант.
Больше подойдет {$float|string_format:"%2.f"}
,
который предлагает дистрибутив Smarty).
Во-вторых, в случае включения $security, все PHP-функции, которые будут
использованы как модификаторы, должны быть объявлены "безопасными"
в элементе MODIFIER_FUNCS
массива
$security_settings
.
См. также
register_modifier()
,
Комбинирование модификаторов и
Плагины - расширение функциональности Smarty.
Преобразовывает первые буквы каждого в переменной слова в заглавные.
Позиция параметра | Тип | Обязателен | По умолчанию | Описание |
---|---|---|---|---|
1 | boolean | Нет | false | Этот параметр определяет, распространяется ли действие модификатора на слова с цифрами |
Example 5.2. capitalize
<?php $smarty->assign('articleTitle', 'next x-men film, x3, delayed.'); ?>
Шаблон:
{$articleTitle} {$articleTitle|capitalize} {$articleTitle|capitalize:true}
Результат обработки:
next x-men film, x3, delayed. Next X-Men Film, x3, Delayed. Next X-Men Film, X3, Delayed.