44 votes

Comment incrémenter une variable affectée dans smarty sans l'afficher

J'ai donc une variable assignée dans smarty :

 {assign var=number value=0}

Maintenant, je peux l'incrémenter en utilisant

 {$number++}

ou

 {++$number}

C'est exactement ce dont j'ai besoin, le seul problème est qu'il affiche la valeur de $number sur la page. Existe-t-il un moyen d'incrémenter la valeur mais de ne pas l'afficher ?

Ceci n'est pas utilisé à l'intérieur d'une boucle, sinon j'utiliserais quelque chose comme itération ou index.

18voto

trapper Points 3714

C'est plus propre de faire comme ça...

 {$number = $number +1}

5voto

huncyrus Points 161

Mieux vaut utiliser le "compteur" Smarty intégré >> élément {counter}

Ainsi, dans le modèle, vous pouvez utiliser :

 <div>Some text, html code, whatever... </div>
{* init the counter! *}
{counter start=0 print=false} {* now the tpl doesn't show the "0" number *}


{* 3x run :D *}
{some_cyclic_stuff_like_foreach_or_section}
    Run the counter: {counter}
{/some_cyclic_stuff_like_foreach_or_section}

Il imprimera pour vous :

 Run the counter: 1
Run the counter: 2
Run the counter: 3

Donc, au moins, vous pouvez l'utiliser avec l' print=false , et vous avez le compteur mais il est caché.

Si vous l'utilisez de la "manière variable" (comme l'écriture de la section supérieure), vous pouvez également le masquer avec html/css ou tout simplement ne pas le laisser s'imprimer :)

-1voto

ridecar2 Points 1287

Si je devais le faire, je ferais quelque chose comme ceci : {php}$number++{/php} mais c'est très moche d'avoir à utiliser php dans un modèle smarty. Cela pourrait suggérer qu'il existe une meilleure façon de faire ce que vous avez prévu de faire.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X