Nome do atributo | Tipo | Obrigatório | Padrão | Descrição |
---|---|---|---|---|
name | string | Sim | n/d | O nome da seção |
loop | [$variable_name] | Sim | n/d | O nome da variável para determinar o número de interações |
start | integer | Não | 0 | A posição do índice que a seção vai começar. Se o valor é negativo, a posição de inicio é calculada a partir do final da matriz. Por exemplo, se houverem sete valores na matriz e 'start' for -2, o índice inicial é 5. Valores inválidos (valores fora do tamanho da matriz) são automaticamente corrigidos para o valor válido mais próximo. |
step | integer | Não | 1 | O valor do passo que será usado para percorrer a matriz. Por exemplo, step=2 irá percorrer os índices 0,2,4, etc. Se step for negativo, ele irá caminhar pela matriz de trás para frente. |
max | integer | Não | 1 | Define o número máximo de loops para a section. |
show | boolean | Não | true | Determina quando mostrar ou não esta section |
Os 'sections' de template são usados para percorrer os dados de uma matriz. Todas as tags section devem ser finalizadas com /section. Os parâmetros obrigatórios são name e loop. O nome da 'section' pode ser o que você quiser, contendo letras, números e sublinhados. As 'sections' podem ser aninhadas, e os nomes das sections devem ser únicos. A variável 'loop' (normalmente uma matriz de valores) determina o número de vezes que a section será percorrida. Quando estiver exibindo uma variável dentro de uma section, o nome da section deve estar ao lado da variável dentro de conchetes []. sectionelse é executado quando não houver valores na variável 'loop'.
Example 7.15. section
{* este exemplo irá mostrar todos os valores da matriz $custid *} {section name=consumidor loop=$custid} id: {$custid[consumidor]}<br> {/section}
MOSTRA:
id: 1000<br> id: 1001<br> id: 1002<br>
Example 7.16. loop de variável section
{* a variável 'loop' somente determina o número de vezes que irá percorrer a matriz. Você pode acessar qualquer variável do template dentro da section. Este exemplo assume que $custid, $nome e $endereco são todas matrizes contendo o mesmo número de valores *} {section name=consumidor loop=$custid} id: {$custid[consumidor]}<br> nome: {$nome[consumidor]}<br> endereço: {$endereco[customer]}<br> <p> {/section}
MOSTRA:
id: 1000<br> nome: John Smith<br> endereço: 253 N 45th<br> <p> id: 1001<br> nome: Jack Jones<br> endereço: 417 Mulberry ln<br> <p> id: 1002<br> nome: Jane Munson<br> endereço: 5605 apple st<br> <p>
Example 7.17. Nomes de section
{* o nome da seção pode ser o que você qusier, e é usado para referenciar os dados contido na seção *} {section name=meusdados loop=$custid} id: {$custid[meusdados]}<br> nome: {$nome[meusdados]}<br> endereço: {$endereco[meusdados]}<br> <p> {/section}
Example 7.18. sections aninhadas
{* sections podem ser aninhadas até o nível que você quiser. Com sections aninhadas, você pode acessar complexas estruturas de dados, tais como matrizes multi-dimensionais. Neste exemplo, $contact_type[customer] é uma matriz contendo os tipos de contatos do consumidor atualmente selecionado. *} {section name=customer loop=$custid} id: {$custid[customer]}<br> name: {$name[customer]}<br> address: {$address[customer]}<br> {section name=contact loop=$contact_type[customer]} {$contact_type[customer][contact]}: {$contact_info[customer][contact]}<br> {/section} <p> {/section}
MOSTRA:
id: 1000<br> name: John Smith<br> address: 253 N 45th<br> home phone: 555-555-5555<br> cell phone: 555-555-5555<br> e-mail: john@mydomain.com<br> <p> id: 1001<br> name: Jack Jones<br> address: 417 Mulberry ln<br> home phone: 555-555-5555<br> cell phone: 555-555-5555<br> e-mail: jack@mydomain.com<br> <p> id: 1002<br> name: Jane Munson<br> address: 5605 apple st<br> home phone: 555-555-5555<br> cell phone: 555-555-5555<br> e-mail: jane@mydomain.com<br> <p>
Example 7.19. sections e matrizes associativas
{* Este é um exemplo de exibição de uma matriz associativa dentro de uma seção *} {section name=consumidor loop=$contatos} nome: {$contatos[consumidor].nome}<br> telefone: {$contatos[consumidor].telefone}<br> celular: {$contatos[consumidor].celular}<br> e-mail: {$contatos[consumidor].email}<p> {/section}
MOSTRA:
name: John Smith<br> home: 555-555-5555<br> cell: 555-555-5555<br> e-mail: john@mydomain.com<p> name: Jack Jones<br> home phone: 555-555-5555<br> cell phone: 555-555-5555<br> e-mail: jack@mydomain.com<p> name: Jane Munson<br> home phone: 555-555-5555<br> cell phone: 555-555-5555<br> e-mail: jane@mydomain.com<p>
Example 7.20. sectionelse
{* sectionelse irá executar se não houverem mais valores em $custid *} {section name=consumidor loop=$custid} id: {$custid[consumidor]}<br> {sectionelse} não há valores em $custid. {/section}
Sections também tem as suas próprias variáveis que manipulam as propriedades da section. Estas são indicadas assim: {$smarty.section.nomesection.nomevariavel}
Nota
A partir do Smarty 1.5.0, a sintaxe para as variáveis de propriedades da section mudou de {%nomesecao.nomevariavel%} para {$smarty.section.nomesection.nomevariavel}. A sintaxe antiga ainda é suportada, mas você verá referências somente à nova sintaxe no manual.
index é usado para mostrar o índice atual do loop, começando em zero (ou pelo atributo start caso tenha sido definido), e incrementado por um (ou pelo atributo step caso tenha sido definido).
Nota Técnica:
Se as propriedades 'start' e 'step' da section não foram modificadas, elas irão funcionar da mesma maneira que a propriedade 'interation' da section funcionam, exceto que ela começa do 0 ao invés de 1.
Example 7.21. propriedade index da section
{section name=consumidor loop=$custid} {$smarty.section.consumidor.index} id: {$custid[consumidor]}<br> {/section}
MOSTRA:
0 id: 1000<br> 1 id: 1001<br> 2 id: 1002<br>
index_prev é usado para mostrar o índice anterior do loop. No primeiro loop, o valor dele é -1.
Example 7.22. propriedade index_prev da section
{section name=consumidor loop=$custid} {$smarty.section.consumidor.index} id: {$custid[consumidor]}<br> {* Para sua informação, $custid[consumidor.index] e $custid[consumidor] tem o mesmo significado *} {if $custid[consumidor.index_prev] ne $custid[consumidor.index]} O id do consumidor irá mudar<br> {/if} {/section}
MOSTRA:
0 id: 1000<br> O id do consumidor irá mudar<br> 1 id: 1001<br> O id do consumidor irá mudar<br> 2 id: 1002<br> O id do consumidor irá mudar<br>
index_next é usado para mostrar o próximo indice do loop. No último loop, isto ainda é um mais o índice atual( respeitando a definição do atributo step, caso tenha sido definido.)
Example 7.23. propriedade index_next section
{section name=consumidor loop=$custid} {$smarty.section.consumidor.index} id: {$custid[consumidor]}<br> {* Para sua informação, $custid[consumidor.index] e $custid[consumidor] tem o mesmo significado *} {if $custid[consumidor.index_next] ne $custid[consumidor.index]} O id do consumidor irá mudar<br> {/if} {/section}
MOSTRA:
0 id: 1000<br> O id do consumidor irá mudar<br> 1 id: 1001<br> O id do consumidor irá mudar<br> 2 id: 1002<br> O id do consumidor irá mudar<br>
iteration é usado para mostrar a interação atual do loop.
Nota:
'interation' não é afetado pelas propriedades start, step e max da section, diferentemente da propriedade index. Interation diferente de 'index' começa com 1 ao invés de 0. 'rownum' é um sinônimo de 'interation', eles exercem a mesma função.
Example 7.24. propriedade interation da section
{section name=consumidor loop=$custid start=5 step=2} interação atual do loop: {$smarty.section.consumidor.iteration}<br> {$smarty.section.consumidor.index} id: {$custid[consumidor]}<br> {* Para sua informação, $custid[consumidor.index] e $custid[consumidor] tem o mesmo significado *} {if $custid[consumidor.index_next] ne $custid[consumidor.index]} O id do consumidor irá mudar<br> {/if} {/section}
MOSTRA:
interação atual do loop: 1 5 id: 1000<br> O id do consumidor irá mudar<br> interação atual do loop: 2 7 id: 1001<br> O id do consumidor irá mudar<br> interação atual do loop: 3 9 id: 1002<br> O id do consumidor irá mudar<br>
first é definido como true se a interação atual da section é a primeira.
Example 7.25. propriedade first da section
{section name=consumidor loop=$custid} {if $smarty.section.consumidor.first} <table> {/if} <tr><td>{$smarty.section.consumidor.index} id: {$custid[consumidor]}</td></tr> {if $smarty.section.consumidor.last} </table> {/if} {/section}
MOSTRA:
<table> <tr><td>0 id: 1000</td></tr> <tr><td>1 id: 1001</td></tr> <tr><td>2 id: 1002</td></tr> </table>
last é definido como true se a interação atual da section é a última.
Example 7.26. propriedade last da section
{section name=consumidor loop=$custid} {if $smarty.section.consumidor.first} <table> {/if} <tr><td>{$smarty.section.consumidor.index} id: {$custid[consumidor]}</td></tr> {if $smarty.section.consumidor.last} </table> {/if} {/section}
MOSTRA:
<table> <tr><td>0 id: 1000</td></tr> <tr><td>1 id: 1001</td></tr> <tr><td>2 id: 1002</td></tr> </table>
rownum é usado para mostrar a interação atual do loop, começando em um. É um sinônimo de iteration, eles exercem a mesma função.
Example 7.27. propriedade rownum da section
{section name=consumidor loop=$custid} {$smarty.section.consumidor.rownum} id: {$custid[consumidor]}<br> {/section}
MOSTRA:
1 id: 1000<br> 2 id: 1001<br> 3 id: 1002<br>
loop é usado para exibir o número do último índice que a section percorreu. Ele pode ser usado dentro ou após o término da section.
Example 7.28. propridade index da section
{section name=consumidor loop=$custid} {$smarty.section.consumidor.index} id: {$custid[consumidor]}<br> {/section} Foram mostrados {$smarty.section.customer.loop} consumidores acima.
MOSTRA:
0 id: 1000<br> 1 id: 1001<br> 2 id: 1002<br> Foram mostrados 3 consumidores acima.
show é usado como um parâmetro da section. show é um valor booleano, verdadeiro ou falso. Caso seja falso, a section não será mostrada. Se existir uma sectionelse presente, ela será exibida.
Example 7.29. atributo show da section
{* $mostrar_info_consumidor talvez tenha que ser enviada pela aplicação PHP, para decidir quando mostrar ou não mostrar esta section *} {section name=consumidor loop=$custid show=$mostrar_info_consumidor} {$smarty.section.consumidor.rownum} id: {$custid[consumidor]}<br> {/section} {if $smarty.section.consumidor.show} a section foi mostrada. {else} a section não foi mostrada. {/if}
MOSTRA:
1 id: 1000<br> 2 id: 1001<br> 3 id: 1002<br> a section foi mostrada.
total é usado para exibir o número de interações que esta section irá percorrer. Ela pode ser usada dentro ou após a section.
Example 7.30. propriedade total da section
{section name=consumidor loop=$custid step=2} {$smarty.section.consumidor.index} id: {$custid[consumidor]}<br> {/section} Foram mostrados {$smarty.section.customer.loop} consumidores acima.
MOSTRA:
0 id: 1000<br> 2 id: 1001<br> 4 id: 1002<br> Foram mostrados 3 consumidores acima.