2012-01-19 11 views
7

Próbuję dostać pętlę dla następujących ...smarty pętla

{$product.min_val} //2 
{$product.max_val} //8 

i próbuję następujących ...

{section name=val start=$product.min_val loop=$product.max_val step=0} 
<p id="{$smarty.section.val.index}">{$smarty.section.val.index}</p> 
{/section} 

drukuje po ...

<p id="2">2</p> 
<p id="3">3</p> 
<p id="4">4</p> 
<p id="5">5</p> 
<p id="6">6</p> 
<p id="7">7</p> 

Być może zauważyłeś, że brakujące <p id="8">8</p> zgodnie z {$product.max_val} dzięki.

Odpowiedz

8

Loop jest liczba razy sekcja pętli, więc trzeba:

{section name=val start=$product.min_val loop=$product.max_val+1} 
<p id="{$smarty.section.val.index}">{$smarty.section.val.index}</p> 
{/section} 
+1

Właściwie, 'loop' to liczba uruchomień, a nie' max' bound: http://www.smarty.net/docsv2/en/language.function.section.tpl –

+0

Dzięki, naprawiono :) – xpapad

0

Podczas gdy wyjście jest dziwne, Twój wkład jest zbyt dziwne. Po pierwsze, zakładam, że chcesz wydrukować następujące wartości:

2, 3, 4, 5, 6, 7, 8; to są 7 numerów

Rzeczywiście, start ma rację i musi być 2. Jednak loop musi być 7 lub bardziej ogólny $product.max_val - $product.min_val + 1. Rozmiar kroku 0 jest po prostu dziwny.

To powinno działać:

{section name=val start=$product.min_val loop=($product.max_val - $product.min_val + 1) step=1} 
    <p id="{$smarty.section.val.index}">{$smarty.section.val.index}</p> 
{/section} 

Choć korzystanie z val jest nieco off myślę. Zamiast tego powinien być użyty jako indeks.