Циклы в Smarty

Разгильдяй

Новичок
Циклы в Smarty

Есть ли в Smarty что-нибудь наподобие цикла for?

У меня передается число шаблону и я хочу чтобы в цикле генерировались ссылки для каждого числа. Тоесть если скажем шаблону передается число 2, то должно сгенерироваться две ссылки типа:
<a href="1">1</a>
<a href="2">2</a>

Подскажите пожалуйста как быть?
 

DimbIch

Новичок
Разгильдяй
цикла for в смарти нет
создай на пхп массив чисел передай в смарти...
или в смарти сделай что то типа
{php}
for($i = 0; $i< 100; $i++)
{
{/php}
тут что надо в смарти
{php}
}
{/php}
 

Разгильдяй

Новичок
Это я читал. А как тогда быть если нужен именно for? не отказываться же ради этот от Smarty
 

Разгильдяй

Новичок
Автор оригинала: DimbIch
Разгильдяй
выше читай
Попробовал сделать твоим способом, но он тогда в цикле не видит переменную Smarty, которая приходит из php класса.
for($i = 0; $i < $pages; $i++)


где $pages у меня передается шаблону так:
$smarty->assign('pages', $pcount);
 

DimbIch

Новичок
эх.. а ПОДУМАТЬ :)
{php}
for($i = 0; $i< {/php}{$pages}{php}; $i++)
{
{/php}
тут что надо в смарти
{php}
}
{/php}

типа так должно работать...
хотя это большой изврат...
лучше создать массив в пхп и пройтись по нему foreach в смарти
 

DimbIch

Новичок
Разгильдяй
да что вы говорите не получиться...
$nrows = $db->NumRows();
$array = array();
for($i = 1; $i< $nrows; $i++)
{
$array[] = $i;
}

$Smarty->assign('massiv',$array);

не получилось ?
 

Разгильдяй

Новичок
Автор оригинала: DimbIch
Разгильдяй
да что вы говорите не получиться...
$nrows = $db->NumRows();
$array = array();
for($i = 1; $i< $nrows; $i++)
{
$array[] = $i;
}

$Smarty->assign('massiv',$array);

не получилось ?
получилось, спасибо. Но всетаки немного неудобно юзать Smarty без for. Не находите?
 

doppelganger

Guest
Можно свою блоковую функцию написать. Только не очень красиво будет, потому что смарти обрабатывает переменные в блоке до вызова функции и придётся использовать какие-то свои обозначения переменных.
 

alexhemp

Новичок
Разгильдяй
doppelganger

Ничего не надо писать. с помощью section можно делать отличные циклы for

Вот с циклами while не знаю как можно сделать, но уверен, если подумать то и это можно сделать...

попробуйте:
{section name=for loop=5}
{$smarty.section.for.index}: {$smarty.section.for.iteration}<br>
{/section}

-~{}~ 15.05.05 23:22:

А вообще нужно просто заглянуть в официальный FAQ по Smarty а не изобретать велосипед ;-)

http://smarty.incutio.com/?page=SmartyFrequentlyAskedQuestions#template-9
 
Сверху