Vous vous approchez le problème du point de vue erroné.
Smarty est utilisé pour afficher des données, avec un ensemble très limité d'instructions pour les manipuler. Puisque nous parlons ici de logique, vous devez générer vos nombres uniques aléatoires ailleurs et ensuite transmettre le résultat au moteur Smarty.
Par conséquent, en supposant que vous utilisez PHP, essayer quelque chose comme ceci:
$min = 1;
$max = 100;
$items_to_pick = 5;
$values = array();
for($i=$min; $i<= $max; ++$i){
$values[] = $i;
}
shuffle($values) //see PHP doc http://www.php.net/manual/en/function.shuffle.php
$result = array_slice($values, 0, $items_to_pick);
$smarty->assign('random_numbers', $result);
Et dans votre fichier modèle:
{foreach from=$random_numbers item=random}
{$random}
{/foreach}
Vous devez toujours essayer de séparer le contenu de la présentation. Smarty ne devrait pas se préoccuper des valeurs qui lui sont transmises. (Contrôles en dehors simples pour voir si vous devez afficher quelque chose ou non, à mon avis)
Un peu réponse tardive, mais merci! : p –
Pourquoi n'utilisez-vous pas {math equation = 'rand (1,12)'}? –