Содержание
Модификаторы переменных могут быть прмменены к
переменным,
пользовательским функциям
или строкам. Для их применения надо после модифицируемого значения
указать символ |
(вертикальная черта) и название модификатора.
Так же модификаторы могут принимать параметры, которые влияют на их поведение.
Эти параметры следуют за названием модификатора и разделяются
:
(двоеточием). Кроме того, все функции 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
используя стандартную функцию PHPcount()
в качестве модификатора. -
Модификаторы автоматически загружаются из директории
$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 | Этот параметр определяет, распространяется ли действие модификатора на слова с цифрами |
Пример 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.