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.