Глава 5. Модификаторы переменных
Модификаторы переменных могут быть прмменены к
переменным,
пользовательским функциям
или строкам. Для их применения надо после модифицируемого значения
указать символ | (вертикальная черта) и название модификатора.
Так же модификаторы могут принимать параметры, которые влияют на их поведение.
Эти параметры следуют за названием модификатора и разделяются
: (двоеточием). Кроме того, все функции PHP могут быть
использованы в качестве модификаторов - об этом дальше.
Пример 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.
Модификаторы автоматически загружаются из директории
$plugins_dir
или могут быть явно зарегистрированы при помощи
register_modifier();
это удобно для использования функции как в PHP-коде, так и в шаблоне.
Любая PHP-функция может быть явно использована в качестве модификатора.
(Предыдущий пример с @count на самом деле использует функцию
PHP, а не модификатор Smarty). Использование PHP-функций в качестве модификаторов
имеет две маленькие "ловушки": Во-первых, иногда порядок аргументов функции
не самый удобный ({"%2.f"|sprintf:$float} - это рабочий, но
не совсем удобный вариант. Больше подойдет {$float|string_format:"%2.f"},
который обеспечивается дистрибутивом Smarty). Во-вторых, в случае включения $security, все PHP-функции, которые будут
использованы как модификаторы, должны быть объявлены "безопасными"
в массиве
$security_settings['MODIFIER_FUNCS'].
См. также
register_modifier(),
register_function(),
Плагины - расширение функциональности Smarty
и
модификаторы.
capitalize
Преобразовывает первые буквы каждого в переменной слова в заглавные.
Пример 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. |
|
См. также
lower
и
upper