section, sectionelse
Nom attribut
Type
Requis
Defaut
Description
name
chaîne de caractère
Oui
n/a
Le nom de la section
loop
mixed
Oui
n/a
valeur qui détermine le nombre de fois que la boucle sera exécutée.
start
entier
Non
0
La position de l'index ou la section commencera son
parcours. Si la valeur donnée est négative, la position de
départ est calculée depuis la fin du tableau. Par exemple,
s'il existe 7 valeurs dans le tableau à parcourir et que start
est à -2, l'index de départ sera 5. Les valeurs incorrectes
(en dehors de la portée du tableau) sont automatiquements
tronquées à la valeur correcte la plus proche.
step
entier
Non
1
La valeur du pas qui sera utilisé pour parcourir le
tableau.Par exemple, step=2 parcourera les indices
0,2,4, etc. Si step est négatif, le tableau sera parcouru en sens
inverse.
max
entier
Non
1
Définit le nombre maximum de fois que le tableau sera
parcouru.
show
booléen
Non
true
Détermine s'il est nécessaire d'afficher la
section ou non.
Les balises section sont utilisées pour
parcourir un tableau de données. Toutes les balises
section doivent être utilisées de paire avec
les balises /section. Les paramètres requis
sont name et loop.
Le nom de la section est, selon votre choix, composé de lettres,
chiffres et underscores. Les sections peuvent être imbriquées,
mais leurs noms doivent être uniques. La variable de parcours
(généralement un tableau de données) détermine le nombre de fois
que la section sera parcourue. Lorsque l'on affiche une variable
dans une section, le nom de la section doit précéder
la variable entre crochets. sectionelse
est exécuté lorsqu'aucune valeur n'est trouvée dans la variable à
parcourir.
section
{* Cet exemple va afficher toutes les valeurs du tableau $idClient *}
{section name=client loop=$idClient}
id: {$idClient[client]}<br>
{/section}
SORTIE:
id: 1000<br>
id: 1001<br>
id: 1002<br>
section, variable de parcours
{* La variable de parcours détermine uniquement le nombre de fois que nous allons
rentrer dans la boucle. Vous pouvez accéder à toutes les variables du template
lorsque vous êtes dans une section. Cet exemple part du principe que
$idClient, $noms et $adresses sont tous des tableaux qui contiennent
autant de valeurs les uns que les autres.*}
{section name=client loop=$idClient}
id: {$idClient[client]}<br>
nom: {$noms[client]}<br>
addresse: {$addresses[client]}<br>
<p>
{/section}
SORTIE:
id: 1000<br>
nom: John Smith<br>
addresse: 253 N 45th<br>
<p>
id: 1001<br>
nom: Jack Jones<br>
addresse: 417 Mulberry ln<br>
<p>
id: 1002<br>
nom: Jane Munson<br>
addresse: 5605 apple st<br>
<p>
nom de section
{* Le nom de la section peut être ce que vous voulez,
et est utilisé pour référencer les données depuis la section. *}
{section name=monTableau loop=$idClient}
id: {$idCLient[monTableau]}<br>
name: {$noms[monTableau]}<br>
address: {$addresses[monTableau]}<br>
<p>
{/section}
sections imbriquées
{* Les sections peuvent être imbriquées à un nombre de niveaux illimité.
Grâce aux sections imbriquées, vous pouvez accéder à des structures de données
complexes, comme des tableaux multi-dimentionnels. Dans cet exemple,
$type_contact[client] est un tableau de type de contact pour le client
courant. *}
{section name=client loop=$idClient}
id: {$idClient[client]}<br>
nom: {$nom[client]}<br>
addresse: {$addresse[client]}<br>
{section name=contact loop=$type_contact[client]}
{$type_contact[client][contact]}: {$info_contact[client][contact]}<br>
{/section}
<p>
{/section}
SORTIE:
id: 1000<br>
nom: John Smith<br>
addresse: 253 N 45th<br>
telephone: 555-555-5555<br>
telephone portable: 555-555-5555<br>
e-mail: john@myexample.com<br>
<p>
id: 1001<br>
nom: Jack Jones<br>
addresse: 417 Mulberry ln<br>
telephone: 555-555-5555<br>
telephone portable: 555-555-5555<br>
e-mail: jack@myexample.com<br>
<p>
id: 1002<br>
nom: Jane Munson<br>
addresse: 5605 apple st<br>
telephone: 555-555-5555<br>
telephone portable: 555-555-5555<br>
e-mail: jane@myexample.com<br>
<p>
Sections et tableaux associatifs
{* Exemple d'affichage d'un tableau associatif dans une section *}
{section name=client loop=$contacts}
nom: {$contacts[client].name}<br>
telephone: {$contacts[client].home}<br>
portable: {$contacts[client].cell}<br>
e-mail: {$contacts[client].email}<p>
{/section}
SORTIE:
nom: John Smith<br>
telephone: 555-555-5555<br>
portable: 555-555-5555<br>
e-mail: john@myexample.com<p>
nom: Jack Jones<br>
telephone: 555-555-5555<br>
portable: 555-555-5555<br>
e-mail: jack@myexample.com<p>
nom: Jane Munson<br>
telephone: 555-555-5555<br>
portable: 555-555-5555<br>
e-mail: jane@myexample.com<p>
sectionelse
{* sectionelse est exécuté s'il n'existe aucune valeur dans idClient *}
{section name=client loop=$idClient}
id: {$idClient[client]}<br>
{sectionelse}
Aucune valeur dans $idClient.
{/section}
Les sections ont leur propre variable de gestion des propriétés.
Elles sont de la forme: {$smarty.section.nomSection.nomVariable}
NOTE: Depuis Smarty 1.5.0, la syntaxe pour les propiétés des sections
a été changée de {%sectionname.varname%} à
{$smarty.section.nomSection.nomVariable}. L'ancienne syntaxe est toujours
supportée, mais vous ne verrez que des exemples avec la nouvelle syntaxe
dans le manuel.
index
Index est utilisé pour afficher l'index de parcours courant, commence par
0 (ou l'attribut start), et s'incrémente de 1 (ou de la valeur
de l'attribut step).
Note technique
Si les attributs step et start ne sont pas modifiés, alors index
fonctionne de la même façon que iteration, à l'exception qu'il commence
par 0 plutôt que par 1.
propriété de section index
{section name=client loop=$idClient}
{$smarty.section.client.index} id: {$idClient[client]}<br>
{/section}
SORTIE:
0 id: 1000<br>
1 id: 1001<br>
2 id: 1002<br>
index_prev
index_prev est utilisé pour afficher l'index de parcours
précédent de la boucle. Au premier passage, il vaut -1.
propriété de section index_prev
{section name=client loop=$idClient}
{$smarty.section.client.index} id: {$idClient[client]}<br>
{* Pour votre information, $idClient[client.index] and $idClient[client] sont identiques *}
{if $idClient[client.index_prev] ne $idClient[client.index]}
L'id du client à été modifié<br>
{/if}
{/section}
SORTIE:
0 id: 1000<br>
L'id du client à été modifié<br>
1 id: 1001<br>
L'id du client à été modifié<br>
2 id: 1002<br>
L'id du client à été modifié<br>
index_next
index_next est utilisé pour afficher la valeur théorique suivante de
index. Dans la dernière boucle, celà reste la valeur incrémentée,
qui respecte l'attribut step si donné.
propriété de section index_next
{section name=client loop=$idClient}
{$smarty.section.client.index} id: {$idClient[client]}<br>
{* Pour votre information, $idClient[client.index] and $idClient[client] sont identiques *}
{if $idClient[client.index_next] ne $idClient[client.index]}
L'id du client va changer<br>
{/if}
{/section}
SORTIE:
0 id: 1000<br>
L'id du client va changer<br>
1 id: 1001<br>
L'id du client va changer<br>
2 id: 1002<br>
L'id du client va changer<br>
iteration
iteration est utilisé pour afficher la valeur courante de l'iteration.
NOTE: Cette valeur n'est pas affectée par les attributs start, step et
max, à l'inverse de la propriété index. L'itération commence par
1 et non par 0 (comme le fait index). rownum est un alias de iteration,
ils fonctionnent de la même façon.
propriété iteration de section
{section name=client loop=$idClient start=5 step=2}
Iteration courante: {$smarty.section.client.iteration}<br>
{$smarty.section.client.index} id: {$idClient[client]}<br>
{* Pour votre information, $idClient[client.index] and $idClient[client] sont identiques *}
{if $idCLient[client.index_next] ne $idClient[client.index]}
L'id du client va changer<br>
{/if}
{/section}
SORTIE:
Iteration courante: 1
5 id: 1000<br>
L'id du client va changer<br>
Iteration courante: 2
7 id: 1001<br>
L'id du client va changer<br>
Iteration courante: 3
9 id: 1002<br>
L'id du client va changer<br>
first
first est à true lorsque la section est parcouru pour la première fois.
propriété first de la section
{section name=client loop=$idClient}
{if $smarty.section.client.first}
<table>
{/if}
<tr><td>{$smarty.section.client.index} id:
{$idClient[client]}</td></tr>
{if $smarty.section.client.last}
</table>
{/if}
{/section}
SORTIE:
<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 est à true lorsque la section est parcourue pour la dernière fois.
Propriété last de section
{section name=client loop=$idClient}
{if $smarty.section.client.first}
<table>
{/if}
<tr><td>{$smarty.section.client.index} id:
{$idClient[client]}</td></tr>
{if $smarty.section.client.last}
</table>
{/if}
{/section}
SORTIE:
<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, utilisé pour afficher la valeur courante de l'itération,
commence par 1. C'est un alias de iteration, ils fonctionnent de façon
identique.
propriété rownum de section
{section name=client loop=$idClient}
{$smarty.section.client.rownum} id: {$idClient[client]}<br>
{/section}
SORTIE:
1 id: 1000<br>
2 id: 1001<br>
3 id: 1002<br>
loop
loop est utilisé pour afficher la dernière valeur de index que cette
section a utilisé. Peut être utilisé dans ou en dehors de la section.
Propriété de section index
{section name=client loop=$idClient}
{$smarty.section.client.index} id: {$idClient[client]}<br>
{/section}
Il y eu {$smarty.section.client.loop} clients d'affichés.
SORTIE:
0 id: 1000<br>
1 id: 1001<br>
2 id: 1002<br>
il y eu 3 clients d'affichés.
show
show est utilisé comme paramètre de section.
show est une valeur booléenne, true ou false.
Si show est à "false", la section ne sera pas affichée. Si un
sectionelse est présent, elle sera affiché.
section, attribut show
{* $show_client_info a pu être passé par le script PHP,
pour déterminer si oui ou non on souhaite afficher la section *}
{section name=client loop=$idClient show=$show_client_info}
{$smarty.section.client.rownum} id: {$idClient[client]}<br>
{/section}
{if $smarty.section.client.show}
la section à été affichée.
{else}
la section n'a pas été affichée.
{/if}
SORTIE:
1 id: 1000<br>
2 id: 1001<br>
3 id: 1002<br>
la section à été affichée.
total
total est utilisé pour afficher le nombre d'itération que la section
va exécuter. Peut être utilisé dans ou en dehors de la section.
section, propriété total
{section name=client loop=$idClient step=2}
{$smarty.section.client.index} id: {$idClient[client]}<br>
{/section}
Il y eu {$smarty.section.client.total} clients affichés.
SORTIE:
0 id: 1000<br>
2 id: 1001<br>
4 id: 1002<br>
Il y eu 3 clients affichés.