<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Chapter 5. Модификаторы переменных</title>
<meta name="generator" content="DocBook XSL Stylesheets V1.75.1">
<link rel="home" href="index.html" title="Руководство по Smarty">
<link rel="up" href="smarty.for.designers.html" title="Part II. Smarty для дизайнеров шаблонов">
<link rel="prev" href="language.variables.smarty.html" title="Зарезервированная переменная {$smarty}">
<link rel="next" href="language.modifier.cat.html" title="cat">
</head>
<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
<div class="navheader">
<table width="100%" summary="Navigation header">
<tr><th colspan="3" align="center">Chapter 5. Модификаторы переменных</th></tr>
<tr>
<td width="20%" align="left">
<a accesskey="p" href="language.variables.smarty.html">Prev</a> </td>
<th width="60%" align="center">Part II. Smarty для дизайнеров шаблонов</th>
<td width="20%" align="right"> <a accesskey="n" href="language.modifier.cat.html">Next</a>
</td>
</tr>
</table>
<hr>
</div>
<div class="chapter" title="Chapter 5. Модификаторы переменных">
<div class="titlepage"><div><div><h2 class="title">
<a name="language.modifiers"></a>Chapter 5. Модификаторы переменных</h2></div></div></div>
<div class="toc">
<p><b>Table of Contents</b></p>
<dl>
<dt><span class="sect1"><a href="language.modifiers.html#language.modifier.capitalize">capitalize</a></span></dt>
<dt><span class="sect1"><a href="language.modifier.cat.html">cat</a></span></dt>
<dt><span class="sect1"><a href="language.modifier.count.characters.html">count_characters</a></span></dt>
<dt><span class="sect1"><a href="language.modifier.count.paragraphs.html">count_paragraphs</a></span></dt>
<dt><span class="sect1"><a href="language.modifier.count.sentences.html">count_sentences</a></span></dt>
<dt><span class="sect1"><a href="language.modifier.count.words.html">count_words</a></span></dt>
<dt><span class="sect1"><a href="language.modifier.date.format.html">date_format</a></span></dt>
<dt><span class="sect1"><a href="language.modifier.default.html">default</a></span></dt>
<dt><span class="sect1"><a href="language.modifier.escape.html">escape</a></span></dt>
<dt><span class="sect1"><a href="language.modifier.indent.html">indent</a></span></dt>
<dt><span class="sect1"><a href="language.modifier.lower.html">lower</a></span></dt>
<dt><span class="sect1"><a href="language.modifier.nl2br.html">nl2br</a></span></dt>
<dt><span class="sect1"><a href="language.modifier.regex.replace.html">regex_replace</a></span></dt>
<dt><span class="sect1"><a href="language.modifier.replace.html">replace</a></span></dt>
<dt><span class="sect1"><a href="language.modifier.spacify.html">spacify</a></span></dt>
<dt><span class="sect1"><a href="language.modifier.string.format.html">string_format</a></span></dt>
<dt><span class="sect1"><a href="language.modifier.strip.html">strip</a></span></dt>
<dt><span class="sect1"><a href="language.modifier.strip.tags.html">strip_tags</a></span></dt>
<dt><span class="sect1"><a href="language.modifier.truncate.html">truncate</a></span></dt>
<dt><span class="sect1"><a href="language.modifier.upper.html">upper</a></span></dt>
<dt><span class="sect1"><a href="language.modifier.wordwrap.html">wordwrap</a></span></dt>
</dl>
</div>
<p>
Модификаторы переменных могут быть прмменены к
<a class="link" href="language.syntax.variables.html" title="Переменные">переменным</a>,
<a class="link" href="language.custom.functions.html" title="Chapter 8. Пользовательские Функции">пользовательским функциям</a>
или строкам. Для их применения надо после модифицируемого значения
указать символ <code class="literal">|</code> (вертикальная черта) и название модификатора.
Так же модификаторы могут принимать параметры, которые влияют на их поведение.
Эти параметры следуют за названием модификатора и разделяются
<code class="literal">:</code> (двоеточием). Кроме того, <span class="emphasis"><em>все функции PHP
могут быть использованы в качестве модификаторов</em></span> (об этом дальше)
и модификаторы можно
<a class="link" href="language.combining.modifiers.html" title="Chapter 6. Комбинирование модификаторов">комбинировать</a>.
</p>
<div class="example">
<a name="id2652795"></a><p class="title"><b>Example 5.1. Примеры модификаторов</b></p>
<div class="example-contents"><pre class="programlisting">
{* применение модификатора к переменной *}
{$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='[email protected]'}
{* использование функции 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>
</pre></div>
</div>
<br class="example-break"><div class="itemizedlist"><ul class="itemizedlist" type="disc">
<li class="listitem">
<p>
Если модификатор применяется к переменной-массиву, то он будет применен к
каждому элементу массива. Если же требуется применить модификатор к массиву,
как к переменной, то необходимо перед именем модификатора указать символ
<code class="literal">@</code>.
</p>
<div class="note" title="Пример" style="margin-left: 0.5in; margin-right: 0.5in;">
<h3 class="title">Пример</h3>
<p>
<code class="literal">{$articleTitle|@count}</code> - выведет количество елементов
в массиве <em class="parameter"><code>$articleTitle</code></em> используя стандартную
функцию PHP
<a class="ulink" href="http://php.net/count" target="_top"><code class="varname">count()</code></a>
в качестве модификатора.
</p>
</div>
<p>
</p>
</li>
<li class="listitem">
<p>
Модификаторы автоматически загружаются из директории <a class="link" href="variable.plugins.dir.html" title="$plugins_dir"><em class="parameter"><code>$plugins_dir</code></em></a>
или могут быть явно зарегистрированы при помощи функции
<a class="link" href="api.register.modifier.html" title="register_modifier">
<code class="varname">register_modifier()</code></a>;
это удобно для использования функции как в PHP-коде, так и в шаблоне.
</p>
<p>
Любая PHP-функция может быть использована в качестве модификатора.
Тем не менее, использование PHP-функций в качестве модификаторов
имеет две маленькие "ловушки":
</p>
<div class="itemizedlist"><ul class="itemizedlist" type="circle">
<li class="listitem"><p>
Во-первых, иногда порядок аргументов функции не самый удобный.
Форматирование <code class="literal">$foo</code> при помощи
<code class="literal">{"%2.f"|sprintf:$float}</code> - это рабочий, но
не совсем удобный вариант.
Больше подойдет <code class="literal">{$float|string_format:"%2.f"}</code>,
который предлагает дистрибутив Smarty).
</p></li>
<li class="listitem"><p>
Во-вторых, в случае включения <a class="link" href="variable.security.html" title="$security">$security</a>, все PHP-функции, которые будут
использованы как модификаторы, должны быть объявлены "безопасными"
в элементе <code class="literal">MODIFIER_FUNCS</code> массива
<a class="link" href="variable.security.settings.html" title="$security_settings">
<em class="parameter"><code>$security_settings</code></em></a>.
</p></li>
</ul></div>
<p>
</p>
</li>
</ul></div>
<p>
См. также
<a class="link" href="api.register.modifier.html" title="register_modifier">
<code class="varname">register_modifier()</code></a>,
<a class="link" href="language.combining.modifiers.html" title="Chapter 6. Комбинирование модификаторов">
Комбинирование модификаторов</a> и
<a class="link" href="plugins.html" title="Chapter 16. Плагины - расширение функциональности Smarty">Плагины - расширение функциональности Smarty</a>.
</p>
<div class="sect1" title="capitalize">
<div class="titlepage"><div><div><h2 class="title" style="clear: both">
<a name="language.modifier.capitalize"></a>capitalize</h2></div></div></div>
<p>
Преобразовывает первые буквы каждого в переменной слова в заглавные.
</p>
<div class="informaltable"><table border="1">
<colgroup>
<col align="center">
<col align="center">
<col align="center">
<col align="center">
<col>
</colgroup>
<thead><tr>
<th align="center">Позиция параметра</th>
<th align="center">Тип</th>
<th align="center">Обязателен</th>
<th align="center">По умолчанию</th>
<th>Описание</th>
</tr></thead>
<tbody><tr>
<td align="center">1</td>
<td align="center">boolean</td>
<td align="center">Нет</td>
<td align="center">false</td>
<td>Этот параметр определяет, распространяется ли действие
модификатора на слова с цифрами</td>
</tr></tbody>
</table></div>
<div class="example">
<a name="id2653777"></a><p class="title"><b>Example 5.2. capitalize</b></p>
<div class="example-contents">
<pre class="programlisting">
<?php
$smarty->assign('articleTitle', 'next x-men film, x3, delayed.');
?>
</pre>
<p>
Шаблон:
</p>
<pre class="programlisting">
{$articleTitle}
{$articleTitle|capitalize}
{$articleTitle|capitalize:true}
</pre>
<p>
Результат обработки:
</p>
<pre class="screen">
next x-men film, x3, delayed.
Next X-Men Film, x3, Delayed.
Next X-Men Film, X3, Delayed.
</pre>
</div>
</div>
<br class="example-break"><p>
См. также
<a class="link" href="language.modifier.lower.html" title="lower">lower</a>
и
<a class="link" href="language.modifier.upper.html" title="upper">upper</a>
</p>
</div>
</div>
<div class="navfooter">
<hr>
<table width="100%" summary="Navigation footer">
<tr>
<td width="40%" align="left">
<a accesskey="p" href="language.variables.smarty.html">Prev</a> </td>
<td width="20%" align="center"><a accesskey="u" href="smarty.for.designers.html">Up</a></td>
<td width="40%" align="right"> <a accesskey="n" href="language.modifier.cat.html">Next</a>
</td>
</tr>
<tr>
<td width="40%" align="left" valign="top">Зарезервированная переменная {$smarty} </td>
<td width="20%" align="center"><a accesskey="h" href="index.html">Home</a></td>
<td width="40%" align="right" valign="top"> cat</td>
</tr>
</table>
</div>
</body>
</html>