From 511d135c39da16e72569fd4a0110745f88ca19ef Mon Sep 17 00:00:00 2001 From: "laggy.luke" Date: Sat, 26 Jul 2008 09:14:39 +0000 Subject: [PATCH] Sync with EN. --- .../language-function-capture.xml | 102 ++-- .../language-function-config-load.xml | 25 +- .../language-function-foreach.xml | 464 +++++++++++++----- 3 files changed, 434 insertions(+), 157 deletions(-) diff --git a/docs/ru/designers/language-builtin-functions/language-function-capture.xml b/docs/ru/designers/language-builtin-functions/language-function-capture.xml index feb6480a..53768d04 100644 --- a/docs/ru/designers/language-builtin-functions/language-function-capture.xml +++ b/docs/ru/designers/language-builtin-functions/language-function-capture.xml @@ -1,42 +1,83 @@ - + - capture + {capture} - {capture} используется для того, чтобы собрать результат обработки - части шаблона между тэгами - в какую-то переменную, вместо того, чтобы вывести результат браузеру. - Любое содержимое между {capture name='foo'} и {/capture} сохраняется в - переменную, указанную в атрибуте name. + {capture} используется для того, чтобы собрать результат + обработки части шаблона между тэгами в какую-то переменную, вместо того, + чтобы отобразить результат. + Любое содержимое между {capture name='foo'} и + {/capture} сохраняется в переменную, указанную в атрибуте + name. Захваченные данные могут в дальнейшем использоваться в шаблоне при помощи специальной переменной $smarty.capture.foo, - где "foo" - значение, переданное атрибуту name. Если атрибут name не указан, - то используется "default". + linkend="language.variables.smarty.capture">$smarty.capture.foo, + где foo - значение, переданное атрибуту name. + Если атрибут name не указан, + то используется default, т.е. $smarty.capture.default. - Команда capture поддерживает вложенность. + Функция {capture} поддерживает вложенность. - - + + + + + + + + + + + Имя атрибута + Тип + Обязателен + По умолчанию + Описание + + + + + name + string + Нет + default + Имя блока для сохранения + + + assign + string + Нет + n/a + Имя переменной для сохранения результатов + + + + + + + Внимание - Будте осторожны, сохраняя вывод команды {insert}. - Если вы используете кэширование + Будте осторожны, сохраняя результат команды {insert}. + Если вы используете + кэширование и в области кэширования встречаются команды - insert, то не сохраняйте данный вывод. + {insert}, + то не сохраняйте данный вывод. - + + - Сохранение вывода шаблона + Сохранение вывода шаблона в указанный атрибут - сохранение содержимого в переменную + Сохранение содержимого в переменную Этот пример также демонстрирует функцию - {popup} + {popup} -Your ip is {$smarty.server.REMOTE_ADDR}. +Имя сервера: {$smarty.server.SERVER_NAME|upper}
+Адрес сервера: {$smarty.server.SERVER_ADDR}
+Ваш IP: {$smarty.server.REMOTE_ADDR}. {/capture} -help +help ]]>
См. также - $smarty.capture, - {eval}, - {fetch}, - fetch() - и {assign}. + $smarty.capture, + {eval}, + {fetch}, + fetch() + и {assign}.
- + {config_load} - {config_load} используется для загрузки конфигурационных переменных - (#variable#) из + {config_load} используется для загрузки + конфигурационных переменных + (#variables#) из конфигурационных файлов в шаблон. @@ -72,7 +73,9 @@ {config_load} - example.conf + + Файл example.conf. + Конфигурационные файлы могут также содержать секции. Вы можете загружать переменные из определенной секции, указав атрибут - 'section'. + section. Имейте в виду, что глобальные + конфигурационные переменные всегда загружаются вместе с секционными + переменными, которые могут переопределять их. Секции файлов конфигурации и встроенная функция - {section} + {section} не имеют ничего общего, кроме схожего названия. @@ -149,17 +154,17 @@ pageTitle = "Customer Info" - См. $config_overwrite + См. $config_overwrite для массивов конфигурационных переменных. См. также Конфигурационные файлы, Конфигурационные переменные, - $config_dir, - get_config_vars() + $config_dir, + get_config_vars() и - config_load(). + config_load(). - + {foreach},{foreachelse} - Циклы {foreach} являются альтернативой - циклам {section}. - {foreach} используется для прохода по - единственному ассоциативному массиву. - Синтаксис - {foreach} намного проще синтаксиса - {section}, но с другой стороны - его можно использовать только для одного массива. - Каждый тэг {foreach} должен иметь пару - {/foreach}. Обязательными параметрами являются - from и item. - Имя цикла {foreach} может быть любым, состоящим из букв, цифр и знаков - подчеркивания. Циклы {foreach} могут быть вложенными - и имена вложенных {foreach} должны быть уникакльными между собой. - Параметр from (обычно - массив значений) - определяет количество итераций цикла {foreach}. - {foreachelse} выполняется в том случае, если - параметр from не содержит значений. + {foreach} используется для работы как с + ассоциативным, + так и с числовыми массивами, в отличие от функции + {section}, + которая предназначена для работы + исключительно с числовыми массивами. + + Синтаксис функции {foreach} намного проще, чем + {section}, + но она может работать только с одним массивом + одновременно. Каждый тэг {foreach} должен иметь + закрывающую пару {/foreach}. - + @@ -54,45 +47,121 @@ string Да n/a - Имя переменной, которая будет выступать в - качестве значения текущего елемента + Имя переменной, которая будет значением текущего елемента key string Нет n/a - Имя переменной, которая будет выступать в - качестве ключа текущего елемента + Имя переменной, которая будет ключом текущего елемента name string Нет n/a - Название цикла foreach для доступа к его - свойствам + Название цикла foreach для доступа к его свойствам + + + + + Атрибуты from и item + являются обязательными. + + + + + + Параметр name цикла {foreach} + может состоять из букв, цифр и знака подчеркивания, как и + переменные PHP. + + + + + + Циклы {foreach} могут быть вложенными при условии, что + их имена будут уникальными. + + + + + + Атрибут from, обычно являющийся массивом, + определяет количество проходов цикла {foreach}. + + + + + + Блок {foreachelse} выполняется в том случае, если + в параметре from нет значений. + + + + + + У циклов {foreach} также есть собственные переменные, + которые обрабатывают свойства. + Доступ к ним можно получить таким образом: + + {$smarty.foreach.name.property}, где + name - атрибут name функции + {foreach}. + + + Обратите внимание + + Атрибут name необходим только в том случае, + когда у вас есть необходимость обращаться к свойствам + {foreach}, в отличие от функции + {section}. + Обращение к свойствам {foreach} с неопределенным + name не вызывает ошибки, но ведёт к непредсказуемым + результатам. + + + + + + + {foreach} имеет следующие свойства: + index, + iteration, + first, + last, + show и + total. + + + - {foreach} - предмет + Атрибут <parameter>item</parameter> assign('custid', $arr); +$arr = array(1000, 1001, 1002); +$smarty->assign('myArray', $arr); ?> ]]> + + Шаблон для отображения $myArray в виде + ненумерованного списка + +
    +{foreach from=$myArray item=foo} +
  • {$foo}
  • {/foreach} +
]]>
@@ -100,39 +169,115 @@ $smarty->assign('custid', $arr); -id: 1001
-id: 1002
+
    +
  • 1000
  • +
  • 1001
  • +
  • 1002
  • +
]]>
- - - {foreach} - предмет и ключ + + + Пример работы атрибутов <parameter>item</parameter> и <parameter>key</parameter> assign('contacts', array( - array('phone' => '1', - 'fax' => '2', - 'cell' => '3'), - array('phone' => '555-4444', - 'fax' => '555-3333', - 'cell' => '760-1234') - )); +$arr = array(9 => 'Tennis', 3 => 'Swimming', 8 => 'Coding'); +$smarty->assign('myArray', $arr); ?> ]]> + + Шаблон для отображения $myArray в виде пар ключ/значение, + как foreach + в PHP. + + +{foreach from=$myArray key=k item=v} +
  • {$k}: {$v}
  • +{/foreach} + +]]> +
    + + Результат выполнения данного примера: + + + +
  • 9: Tennis
  • +
  • 3: Swimming
  • +
  • 8: Coding
  • + +]]> +
    +
    + + + {foreach} с ассоциативным атрибутом <parameter>item</parameter> + + array('no' => 2456, 'label' => 'Salad'), + 96 => array('no' => 4889, 'label' => 'Cream') + ); +$smarty->assign('items', $items_list); +?> +]]> + + + Шаблон для отображения элементов $items, в котором + $myId используется в URL'е + + + +{foreach from=$items key=myId item=i} +
  • {$i.no}: {$i.label}
  • +{/foreach} + +]]> +
    + + Результат выполнения данного примера: + + + +
  • 2456: Salad
  • +
  • 4889: Cream
  • + +]]> + +
    + + + {foreach} со вложенными <parameter>item</parameter> и <parameter>key</parameter> + В Smarty передан такой массив, ключ которого содержит ключ для каждого перебираемого значения. + +assign('contacts', array( + array('phone' => '1', + 'fax' => '2', + 'cell' => '3'), + array('phone' => '555-4444', + 'fax' => '555-3333', + 'cell' => '760-1234') + )); +?> +]]> + + Шаблон для отображения $contact. - {foreach key=key item=item from=$contact} - {$key}: {$item}<br> - {$key}: {$item}
    - {/foreach} +
    + {foreach key=key item=item from=$contact} + {$key}: {$item}
    + {/foreach} {/foreach} ]]>
    @@ -142,93 +287,178 @@ $smarty->assign('contacts', array( - phone: 1
    - fax: 2
    - cell: 3
    + phone: 1
    + fax: 2
    + cell: 3

    - phone: 555-4444
    - fax: 555-3333
    - cell: 760-1234
    + phone: 555-4444
    + fax: 555-3333
    + cell: 760-1234
    ]]>
    - + - {foreach} - базы данных (к примеру, PEAR или ADODB) - + Пример использования {foreachelse} при работе с базой данных + + Пример работы с базой данных (при помощи PEAR или ADODB) в скрипте поиска, + результаты которого передаются в Smarty. + + assign("contacts", $db->getAssoc($sql)); + $search_condition = "WHERE name LIKE '$foo%' "; + $sql = 'SELECT contact_id, name, nick FROM contacts '.$search_condition.' ORDER BY name'; + $smarty->assign('results', $db->getAssoc($sql) ); ?> ]]> + + Шаблон отобразит сообщение Ничего не найдено при помощи + {foreachelse} в случае, если поиск не дал результатов. + {$con.name} - {$con.nick}

    +{foreachelse} + Ничего не найдено {/foreach} ]]> -
    + - - Циклы {foreach} также имеют собственные переменные, которые содержат свойства - {foreach}. - Они обозначаются так: - {$smarty.foreach.foreachname.varname} - {$smarty.foreach.foreachname.varname}, где foreachname - это название цикла - (значение атрибута name). - - - - См. {section} - для примеров следующих свойств, так как они идентичны. - + + .index + + index contains the current array index, starting with zero. + + + <parameter>index</parameter> example - - iteration - - iteration используется для отображения текущего номера итерации цикла. - Итерации всегда начинаются с 1 и увеличиваются на одну при каждом - прохождении цикла. - - + + +{foreach from=$items key=myId item=i name=foo} + {if $smarty.foreach.foo.index % 5 == 0} + Title + {/if} + {$i.label} +{/foreach} + +]]> + + + - - first - - first устанавливается в true, если текущая итерация первая. - - + + .iteration + + iteration содержит значение текущей итерации цикла + и всегда начинается с единицы, в отличие от + index. + Это значение увеличивается на единицу с каждой следующей итерацией. + + + Примеры работы с <parameter>iteration</parameter> и <parameter>index</parameter> + + + + - - last - - last устанавливается в true, если текущая итерация последняя. - - - - - show - - Атрибут show может принимать логические - значения (истина или ложь). Если ложь, то цикл foreach не будет - отображаться. Если присутствует тэг foreachelse, то он будет - отображен. - - - total - - total хранит количество итераций цикла. - Может быть использовано как в цикле, так и вне его. - + + .first + + Свойство first равно &true;, если текущая итерация + {foreach} - первая. + + + Пример использования свойства <parameter>first</parameter> + + +{foreach from=$items key=myId item=i name=foo} + + {if $smarty.foreach.foo.first}НОВОЕ{else}{$myId}{/if} + {$i.label} + +{/foreach} + +]]> + + + + + + .last + + Свойство last равно &true;, если текущая итерация + {foreach} - последняя. + + + Пример использования свойства <parameter>last</parameter> + +) в конце списка *} +{foreach from=$items key=part_id item=prod name=products} + {$prod}{if $smarty.foreach.products.last}
    {else},{/if} +{foreachelse} + ... content ... +{/foreach} +]]> +
    +
    +
    + + + .show + + show используется как параметр для {foreach}. + show - это булевое значение. + Если оно равно &false;, результат работы {foreach} не будет отображен. + Если присутствует директива {foreachelse}, её содержимое + будет отображено. + + + + + .total + + total содержит общее количество итераций, + которое пройдет данный цикл {foreach}. + Его можно использовать во время или после выполнения {foreach}. + + + Пример использования свойства <parameter>total</parameter> + + +{if $smarty.foreach.foo.last} +
    {$smarty.foreach.foo.total} предметов
    +{/if} +{foreachelse} + ... что-то другое ... +{/foreach} +]]> +
    +
    - См. также {section} и - $smarty.foreach. + См. также + {section} + и + $smarty.foreach.