9
votes

Comment vérifier l'itération à Smarty?

Comment puis-je vérifier l'itération actuelle pour pour utiliser et faire quelque chose?

{foreach $new_products as $product name=foo}
    {if $smarty.foreach.foo.iteration=5}
        Do it!
    {/if}
{/foreach}


1 commentaires

{foreach $ à partir d'article} {si $ item @ itération == 5} est un peu plus court ...


3 Réponses :


10
votes

Je pense que vous devriez faire {si $ $ smarty.foreach.foo.itération == 5} (Notez le == ).


3 commentaires

Pourquoi le double est-il égal? J'essaie juste de comprendre parce que === fonctionne bien aussi.


@LOXYBOI Vous pouvez utiliser deux ou trois signes égaux (trois vérifieront que le type correspond aussi - voir php.net/manual/de/language.types.type-juggling.php ). Mais dans la question initiale, il n'y avait qu'un seul signe égal, ce qui ne va pas.


@Apfelbox Oh oui, je peux voir que maintenant, n'a pas repéré celui-ci "=" dans la question. Je pensais que vous parlez de règles spécifiques à Smarty. Merci!



6
votes

Il y a une technique alternative (je pense plus récente) pour cela. L'exemple de Smarty Docs le démontre bien:

{foreach $items as $i}
  {if $i@index eq 3}
     {* put empty table row *}
     <tr><td>nbsp;</td></tr>
  {/if}
  <tr><td>{$i.label}</td></tr>
{/foreach}


0 commentaires

4
votes

Pour Smarty 3 Vous pouvez utiliser @ alteration Propriété

{foreach $new_products as $product}
    {if $product@iteration == 5}
        Do it!
    {/if}
{/foreach}


0 commentaires