foreach,foreachelse Имя атрибута Тип Обязателен По умолчанию Описание from array Да n/a Массив, по которому надо пройтись item string Да n/a Имя переменной, которая будет выступать в качестве значения текущего елемента key string Нет n/a Имя переменной, которая будет выступать в качестве ключа текущего елемента name string Нет n/a Название цикла foreach для доступа к его свойствам Циклы foreach являются альтернативой циклам section. Циклы foreach используются для прохождения по одному массиву. Синтаксис foreach намного проще, чем section, но его можно использовать только для одного массива. Тэг foreach должен иметь в пару тэг /foreach. Обязательные параметры - from и item. Название цикла foreach может быть любой последовательностью букв, цифр и знаков подчеркиваний _. Циклы foreach могут быть вложенные, и имена вложенных циклов должны быть уникальные. Переменная from (обычно массив значений) указывает количество итераций цикла. foreachelse выполняется, если нету значений в переменной from. foreach {/foreach} OUTPUT: id: 1000
id: 1001
id: 1002
]]>
foreach key assign("contacts", array(array("phone" => "1", "fax" => "2", "cell" => "3"), array("phone" => "555-4444", "fax" => "555-3333", "cell" => "760-1234"))); *} {foreach name=outer item=contact from=$contacts} {foreach key=key item=item from=$contact} {$key}: {$item}
{/foreach} {/foreach} OUTPUT: phone: 1
fax: 2
cell: 3
phone: 555-4444
fax: 555-3333
cell: 760-1234
]]>
Циклы foreach имеют свои свойства, доступ к которым реализуется через {$smarty.foreach.foreachname.varname}, где foreachname это название цикла (значение атрибута name), а varname - имя свойства. iteration Количество отработанных итераций. Отсчет начинается с 1 и увеличивается на единицу на каждой итерации. first first устанавливается в true, если текущая итерация первая. last last устанавливается в true, если текущая итерация последняя. show Атрибут show может принимать логические значения (истина или ложь). Если ложь, то цикл foreach не будет отображаться. Если присутствует тэг foreachelse, то он будет отображен. total total хранит количество итераций цикла. Может быть использовано как в цикле, так и вне его..