Просмотр файла manual-ru/language.modifiers.html

Размер файла: 12.54Kb
  1. <html>
  2. <head>
  3. <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
  4. <title>Chapter 5. Модификаторы переменных</title>
  5. <meta name="generator" content="DocBook XSL Stylesheets V1.75.1">
  6. <link rel="home" href="index.html" title="Руководство по Smarty">
  7. <link rel="up" href="smarty.for.designers.html" title="Part II. Smarty для дизайнеров шаблонов">
  8. <link rel="prev" href="language.variables.smarty.html" title="Зарезервированная переменная {$smarty}">
  9. <link rel="next" href="language.modifier.cat.html" title="cat">
  10. </head>
  11. <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
  12. <div class="navheader">
  13. <table width="100%" summary="Navigation header">
  14. <tr><th colspan="3" align="center">Chapter 5. Модификаторы переменных</th></tr>
  15. <tr>
  16. <td width="20%" align="left">
  17. <a accesskey="p" href="language.variables.smarty.html">Prev</a> </td>
  18. <th width="60%" align="center">Part II. Smarty для дизайнеров шаблонов</th>
  19. <td width="20%" align="right"> <a accesskey="n" href="language.modifier.cat.html">Next</a>
  20. </td>
  21. </tr>
  22. </table>
  23. <hr>
  24. </div>
  25. <div class="chapter" title="Chapter 5. Модификаторы переменных">
  26. <div class="titlepage"><div><div><h2 class="title">
  27. <a name="language.modifiers"></a>Chapter 5. Модификаторы переменных</h2></div></div></div>
  28. <div class="toc">
  29. <p><b>Table of Contents</b></p>
  30. <dl>
  31. <dt><span class="sect1"><a href="language.modifiers.html#language.modifier.capitalize">capitalize</a></span></dt>
  32. <dt><span class="sect1"><a href="language.modifier.cat.html">cat</a></span></dt>
  33. <dt><span class="sect1"><a href="language.modifier.count.characters.html">count_characters</a></span></dt>
  34. <dt><span class="sect1"><a href="language.modifier.count.paragraphs.html">count_paragraphs</a></span></dt>
  35. <dt><span class="sect1"><a href="language.modifier.count.sentences.html">count_sentences</a></span></dt>
  36. <dt><span class="sect1"><a href="language.modifier.count.words.html">count_words</a></span></dt>
  37. <dt><span class="sect1"><a href="language.modifier.date.format.html">date_format</a></span></dt>
  38. <dt><span class="sect1"><a href="language.modifier.default.html">default</a></span></dt>
  39. <dt><span class="sect1"><a href="language.modifier.escape.html">escape</a></span></dt>
  40. <dt><span class="sect1"><a href="language.modifier.indent.html">indent</a></span></dt>
  41. <dt><span class="sect1"><a href="language.modifier.lower.html">lower</a></span></dt>
  42. <dt><span class="sect1"><a href="language.modifier.nl2br.html">nl2br</a></span></dt>
  43. <dt><span class="sect1"><a href="language.modifier.regex.replace.html">regex_replace</a></span></dt>
  44. <dt><span class="sect1"><a href="language.modifier.replace.html">replace</a></span></dt>
  45. <dt><span class="sect1"><a href="language.modifier.spacify.html">spacify</a></span></dt>
  46. <dt><span class="sect1"><a href="language.modifier.string.format.html">string_format</a></span></dt>
  47. <dt><span class="sect1"><a href="language.modifier.strip.html">strip</a></span></dt>
  48. <dt><span class="sect1"><a href="language.modifier.strip.tags.html">strip_tags</a></span></dt>
  49. <dt><span class="sect1"><a href="language.modifier.truncate.html">truncate</a></span></dt>
  50. <dt><span class="sect1"><a href="language.modifier.upper.html">upper</a></span></dt>
  51. <dt><span class="sect1"><a href="language.modifier.wordwrap.html">wordwrap</a></span></dt>
  52. </dl>
  53. </div>
  54. <p>
  55. Модификаторы переменных могут быть прмменены к
  56. <a class="link" href="language.syntax.variables.html" title="Переменные">переменным</a>,
  57. <a class="link" href="language.custom.functions.html" title="Chapter 8. Пользовательские Функции">пользовательским функциям</a>
  58. или строкам. Для их применения надо после модифицируемого значения
  59. указать символ <code class="literal">|</code> (вертикальная черта) и название модификатора.
  60. Так же модификаторы могут принимать параметры, которые влияют на их поведение.
  61. Эти параметры следуют за названием модификатора и разделяются
  62. <code class="literal">:</code> (двоеточием). Кроме того, <span class="emphasis"><em>все функции PHP
  63. могут быть использованы в качестве модификаторов</em></span> (об этом дальше)
  64. и модификаторы можно
  65. <a class="link" href="language.combining.modifiers.html" title="Chapter 6. Комбинирование модификаторов">комбинировать</a>.
  66. </p>
  67. <div class="example">
  68. <a name="id2652795"></a><p class="title"><b>Example 5.1. Примеры модификаторов</b></p>
  69. <div class="example-contents"><pre class="programlisting">
  70.  
  71. {* применение модификатора к переменной *}
  72. {$title|upper}
  73.  
  74. {* модификатор с параметрами *}
  75. {$title|truncate:40:'...'}
  76.  
  77. {* применение модификатора к аргументу функции *}
  78. {html_table loop=$myvar|upper}
  79.  
  80. {* с параметрами *}
  81. {html_table loop=$myvar|truncate:40:'...'}
  82.  
  83. {* применение модификатора к строке *}
  84. {'foobar'|upper}
  85.  
  86. {* использование date_format для форматирования текущей даты *}
  87. {$smarty.now|date_format:"%Y/%m/%d"}
  88.  
  89. {* применение модификатора к функции *}
  90. {mailto|upper address='smarty@example.com'}
  91.  
  92. {* использование функции PHP str_repeat *}
  93. {'='|str_repeat:80}
  94.  
  95. {* функция PHP count *}
  96. {$myArray|@count}
  97.  
  98. {* функция PHP shuffle, применяемая к IP адресу сервера *}
  99. {$smarty.server.SERVER_ADDR|shuffle}
  100.  
  101. (* это приведет в верхний регистр букв и обрежет пробелы у всех элементов массива *}
  102. &lt;select name="name_id"&gt;
  103. {html_options output=$myArray|upper|truncate:20}
  104. &lt;/select&gt;
  105.  
  106. </pre></div>
  107. </div>
  108. <br class="example-break"><div class="itemizedlist"><ul class="itemizedlist" type="disc">
  109. <li class="listitem">
  110. <p>
  111. Если модификатор применяется к переменной-массиву, то он будет применен к
  112. каждому элементу массива. Если же требуется применить модификатор к массиву,
  113. как к переменной, то необходимо перед именем модификатора указать символ
  114. <code class="literal">@</code>.
  115.  
  116. </p>
  117. <div class="note" title="Пример" style="margin-left: 0.5in; margin-right: 0.5in;">
  118. <h3 class="title">Пример</h3>
  119. <p>
  120. <code class="literal">{$articleTitle|@count}</code> - выведет количество елементов
  121. в массиве <em class="parameter"><code>$articleTitle</code></em> используя стандартную
  122. функцию PHP
  123. <a class="ulink" href="http://php.net/count" target="_top"><code class="varname">count()</code></a>
  124. в качестве модификатора.
  125. </p>
  126. </div>
  127. <p>
  128. </p>
  129. </li>
  130. <li class="listitem">
  131. <p>
  132. Модификаторы автоматически загружаются из директории <a class="link" href="variable.plugins.dir.html" title="$plugins_dir"><em class="parameter"><code>$plugins_dir</code></em></a>
  133. или могут быть явно зарегистрированы при помощи функции
  134. <a class="link" href="api.register.modifier.html" title="register_modifier">
  135. <code class="varname">register_modifier()</code></a>;
  136. это удобно для использования функции как в PHP-коде, так и в шаблоне.
  137. </p>
  138. <p>
  139. Любая PHP-функция может быть использована в качестве модификатора.
  140. Тем не менее, использование PHP-функций в качестве модификаторов
  141. имеет две маленькие "ловушки":
  142. </p>
  143. <div class="itemizedlist"><ul class="itemizedlist" type="circle">
  144. <li class="listitem"><p>
  145. Во-первых, иногда порядок аргументов функции не самый удобный.
  146. Форматирование <code class="literal">$foo</code> при помощи
  147. <code class="literal">{"%2.f"|sprintf:$float}</code> - это рабочий, но
  148. не совсем удобный вариант.
  149. Больше подойдет <code class="literal">{$float|string_format:"%2.f"}</code>,
  150. который предлагает дистрибутив Smarty).
  151. </p></li>
  152. <li class="listitem"><p>
  153. Во-вторых, в случае включения <a class="link" href="variable.security.html" title="$security">$security</a>, все PHP-функции, которые будут
  154. использованы как модификаторы, должны быть объявлены "безопасными"
  155. в элементе <code class="literal">MODIFIER_FUNCS</code> массива
  156. <a class="link" href="variable.security.settings.html" title="$security_settings">
  157. <em class="parameter"><code>$security_settings</code></em></a>.
  158. </p></li>
  159. </ul></div>
  160. <p>
  161. </p>
  162. </li>
  163. </ul></div>
  164. <p>
  165. См. также
  166. <a class="link" href="api.register.modifier.html" title="register_modifier">
  167. <code class="varname">register_modifier()</code></a>,
  168. <a class="link" href="language.combining.modifiers.html" title="Chapter 6. Комбинирование модификаторов">
  169. Комбинирование модификаторов</a> и
  170. <a class="link" href="plugins.html" title="Chapter 16. Плагины - расширение функциональности Smarty">Плагины - расширение функциональности Smarty</a>.
  171. </p>
  172. <div class="sect1" title="capitalize">
  173. <div class="titlepage"><div><div><h2 class="title" style="clear: both">
  174. <a name="language.modifier.capitalize"></a>capitalize</h2></div></div></div>
  175. <p>
  176. Преобразовывает первые буквы каждого в переменной слова в заглавные.
  177. </p>
  178. <div class="informaltable"><table border="1">
  179. <colgroup>
  180. <col align="center">
  181. <col align="center">
  182. <col align="center">
  183. <col align="center">
  184. <col>
  185. </colgroup>
  186. <thead><tr>
  187. <th align="center">Позиция параметра</th>
  188. <th align="center">Тип</th>
  189. <th align="center">Обязателен</th>
  190. <th align="center">По умолчанию</th>
  191. <th>Описание</th>
  192. </tr></thead>
  193. <tbody><tr>
  194. <td align="center">1</td>
  195. <td align="center">boolean</td>
  196. <td align="center">Нет</td>
  197. <td align="center">false</td>
  198. <td>Этот параметр определяет, распространяется ли действие
  199. модификатора на слова с цифрами</td>
  200. </tr></tbody>
  201. </table></div>
  202. <div class="example">
  203. <a name="id2653777"></a><p class="title"><b>Example 5.2. capitalize</b></p>
  204. <div class="example-contents">
  205. <pre class="programlisting">
  206.  
  207. &lt;?php
  208.  
  209. $smarty-&gt;assign('articleTitle', 'next x-men film, x3, delayed.');
  210.  
  211. ?&gt;
  212.  
  213. </pre>
  214. <p>
  215. Шаблон:
  216. </p>
  217. <pre class="programlisting">
  218.  
  219. {$articleTitle}
  220. {$articleTitle|capitalize}
  221. {$articleTitle|capitalize:true}
  222.  
  223. </pre>
  224. <p>
  225. Результат обработки:
  226. </p>
  227. <pre class="screen">
  228.  
  229. next x-men film, x3, delayed.
  230. Next X-Men Film, x3, Delayed.
  231. Next X-Men Film, X3, Delayed.
  232.  
  233. </pre>
  234. </div>
  235. </div>
  236. <br class="example-break"><p>
  237. См. также
  238. <a class="link" href="language.modifier.lower.html" title="lower">lower</a>
  239. и
  240. <a class="link" href="language.modifier.upper.html" title="upper">upper</a>
  241. </p>
  242. </div>
  243. </div>
  244. <div class="navfooter">
  245. <hr>
  246. <table width="100%" summary="Navigation footer">
  247. <tr>
  248. <td width="40%" align="left">
  249. <a accesskey="p" href="language.variables.smarty.html">Prev</a> </td>
  250. <td width="20%" align="center"><a accesskey="u" href="smarty.for.designers.html">Up</a></td>
  251. <td width="40%" align="right"> <a accesskey="n" href="language.modifier.cat.html">Next</a>
  252. </td>
  253. </tr>
  254. <tr>
  255. <td width="40%" align="left" valign="top">Зарезервированная переменная {$smarty} </td>
  256. <td width="20%" align="center"><a accesskey="h" href="index.html">Home</a></td>
  257. <td width="40%" align="right" valign="top"> cat</td>
  258. </tr>
  259. </table>
  260. </div>
  261. </body>
  262. </html>