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.