Nome do Atributo | Tipo | Obrigatório | Padrão | Descrição |
---|---|---|---|---|
from | string | Sim | n/d | O nome da matriz que você estará pegando os elementos |
item | string | Yes | n/d | O nome da variável que é o elemento atual |
key | string | Não | n/d | O nome da variável que é a chave atual |
name | string | Não | n/d | O nome do loop foreach para acessar as propriedades foreach |
Loops foreach são uma alternativa para loops section. foreach é usado para pegar cada elemento de uma matriz associativa simples. A sintaxe para foreach é muito mais simples do que section, mas tem a desvantagem de poder ser usada apenas para uma única matriz. Tags foreach devem ter seu par /foreach. Os parâmetros requeridos são from e item. O nome do loop foreach pode ser qualquer coisa que você queira, feito de letras, números e sublinhados. Loops foreach podem ser aninhados, e o nome dos loops aninhados devem ser diferentes um dos outros. A variável from (normalmente uma matriz de valores) determina o número de vezes do loop foreach. foreachelse é executado quando não houverem mais valores na variável from.
Example 7.4. foreach
{* este exemplo irá mostrar todos os valores da matriz $custid *} {foreach from=$custid item=curr_id} id: {$curr_id}<br> {/foreach}
MOSTRA:
id: 1000<br> id: 1001<br> id: 1002<br>
Example 7.5. foreach key
{* A key contém a chave para cada valor do loop A definição se parece com isso: $smarty->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}<br> {/foreach} {/foreach}
MOSTRA:
phone: 1<br> fax: 2<br> cell: 3<br> phone: 555-4444<br> fax: 555-3333<br> cell: 760-1234<br>
Loop foreach também tem as suas próprias variáveis para manipilar as propriedades foreach. Estas são indicadas assim: {$smarty.foreach.foreachname.varname} com foreachname sendo o nome especificado no atributo name do foreach.
iteration é usado para mostrar a interação atual do loop.
Iteration sempre começa em 1 e é incrementado um a um em cada interação.
show é usado como parâmetro para o foreach. show é um valor booleano, true ou false. Se false, o foreach não será mostrado. Se tiver um foreachelse presente, este será alternativamente mostrado.