smarty template engine
Friday, May 16, 2008  
download | documentation | faq | forum | mailing lists | changelog | contribs 


search for in the  


section,sectionelse

Nome do atributoTipoObrigatórioPadrãoDescrição
namestringSimn/dO nome da seção
loop[$variable_name]Simn/dO nome da variável para determinar o número de interações
startintegerNão0A 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.
stepintegerNão1O 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.
maxintegerNão1Define o número máximo de loops para a section.
showbooleanNãotrueDetermina 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'.

Exemplo 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>

Exemplo 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>

Exemplo 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}

Exemplo 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>

Exemplo 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>

Exemplo 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

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.

Exemplo 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

index_prev é usado para mostrar o índice anterior do loop. No primeiro loop, o valor dele é -1.

Exemplo 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

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.)

Exemplo 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

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.

Exemplo 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

first é definido como true se a interação atual da section é a primeira.

Exemplo 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

last é definido como true se a interação atual da section é a última.

Exemplo 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

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.

Exemplo 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

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.

Exemplo 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

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.

Exemplo 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

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.

Exemplo 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.



 

credits 

Smarty Copyright © 2002-2008 New Digital Group, Inc.
All rights reserved.
Last updated: Tue Feb 12 09:11:29 2008 CST