Manuel Smarty
{section},{sectionelse}
Une {section} sert à boucler dans des tableaux de données, contrairement à {foreach} qui est utilisé pour boucler dans un simple tableau associatif. Chaque balise {section} doit aller de paire avec une balise {/section} fermante.
| Nom attribut | Type | Requis | Défaut | 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 | n/a | Définit le nombre maximum de fois que le tableau sera parcouru |
| show | booléen | No | TRUE | Détermine s'il est nécessaire d'afficher la section ou non |
-
Les paramètres requis sont name et loop.
-
Le name de la {section} est, selon votre choix, composé de lettres, chiffres et underscores, comme pour les variables PHP.
-
Les sections peuvent être imbriquées mais leurs noms doivent être uniques.
-
L'attribut loop, habituellement un tableau de valeurs, détermine le nombre de fois que {section} doit boucler.
-
Lors de l'affichage d'une variable dans une {section}, le nom de la {section} doit être fournis après le nom de la variable entre crochets [].
-
{sectionelse} est exécuté lorsqu'aucune valeur n'est trouvée dans la variable à parcourir.
-
{section} a également ces propres variables qui gérent les propriétés de la {section}. Ces propriétés sont accessibles comme ceci : {$smarty.section.name.property} où << name >> est l'attribut name.
-
Les propriétés de {section} sont index, index_prev, index_next, iteration, first, last, rownum, loop, show, total.
|
Exemple 7-30. Boucler dans un simple tableau avec {section} assign() un tableau à Smarty
Le template qui affiche le tableau
L'exemple ci-dessus affichera :
|
|
Exemple 7-32. Nommage d'une {section} Le name de la {section} peut être ce que vous voulez, voir les variables PHP. Il sera utilisé pour référencer les données de la {section}.
|
|
Exemple 7-34. {section} démontrant l'utilisation de la variable loop Cet exemple suppose que $custid, $name et $address sont tous des tableaux contenant le même nombre de valeurs. Tout d'abord, le script PHP qui assigne les tableaux à Smarty.
La variable loop détermine uniquement le nombre de fois qu'il faut boucler. Vous pouvez accéder à n'importe quelle variable du template dans la {section}
L'exemple ci-dessus affichera :
|
|
Exemple 7-35. {section} imbriquée Les sections peuvent être imbriquées autant de fois que vous le voulez. Avec les sections imbriquées, vous pouvez accéder aux structures de données complexes, comme les tableaux multi-dimentionnels. Voici un script PHP qui assigne les tableaux.
Dans ce template, $contact_type[customer] est un tableau de types de contacts.
L'exemple ci-dessus affichera :
|
|
Exemple 7-36. Exemple avec une base de données et {sectionelse} Les résultats d'une recherche dans une base de données (e.g. ADODB ou PEAR) sont assignés à Smarty
Le template pour afficher le résultat de la base de données dans un tableau HTML
|
.index
index contient l'index courant du tableau, en commençant par zéro ou par start s'il est fourni. Il s'incrémente d'un en un ou de step s'il est fourni.
Note technique : Si les propriétés step et start ne sont pas modifiés, alors le fonctionnement est le même que celui de la propriété iteration, mise à part qu'il commence à zéro au lieu de un.
|
Exemple 7-37. Exemple avec la propriété index
L'exemple ci-dessus affichera :
|
.index_next
index_next est l'index de la prochaine boucle. Lors de la prochaine boucle, il vaudra un de moins que l'index courant, suivant la configuration de l'attribut step, s'il est fourni.
|
Exemple 7-38. Exemple avec les propriétés index, index_next et index_prev
Le template pour afficher le tableau ci-dessus dans un tableau HTML
L'exemple ci-dessus affichera un tableau HTML contenant :
|
.iteration
iteration contient l'itération courante de la boucle et commence à un.
Note : Ceci n'est pas affecté par les propriétés {section} start, step et max contrairement à la propriété index. iteration commence également à un au lieu de zéro contrairement à index. rownum est un alias de iteration, ils sont identiques.
|
Exemple 7-39. Exemple avec la propriété iteration
Le template pour afficher tous les autres éléments du tableau $arr comme step=2
L'exemple ci-dessus affichera :
Un autre exemple d'utilisation de la propriété iteration est d'afficher un bloc d'en-tête d'un tableau toutes les 5 lignes. Utilisez la fonction {if} avec l'opérateur mod.
|
.last
last est défini à TRUE si l'itération courante de la section est la dernière.
|
Exemple 7-40. Exemple avec les propriétés first et last Cet exemple boucle sur le tableau $customers, affiche un bloc d'en-tête lors de la première itération et, lors de la dernière, affiche un bloc de pied de page. Utilise aussi la propriété total.
|
.rownum
rownum contient l'itération courante de la boucle, commençant à un. C'est un alias de iteration, ils fonctionnent exactement de la même façon.
.loop
loop contient le dernier index de la boucle de la section. Il peut être utilisé dans ou après la {section}.
|
Exemple 7-41. Exemple avec la propriété loop
L'exemple ci-dessus affichera :
|
.show
show est utilisé en tant que paramètre à la section et est une valeur booléenne. S'il vaut FALSE, la section ne sera pas affichée. S'il y a un {sectionelse}, il sera affiché de façon alternative.
|
Exemple 7-42. Exemple avec la propriété show Une valeur booléenne $show_customer_info est passée depuis l'application PHP, pour réguler l'affichage ou non de cette section.
L'exemple ci-dessus affichera :
|
.total
total contient le nombre d'itérations que cette {section} bouclera. Il peut être utilisé dans ou après une {section}.
Voir aussi {foreach} et $smarty.section.
Remonter 
