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используя стандартную функцию 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 | Этот параметр определяет, распространяется ли действие модификатора на слова с цифрами |
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.