- 1
[Opened] problemes Foreach controller/template
Posted by wolf on 02/14/2008 10:40
Bonjour,
j'ai rencontré un petit souci, et je ne sais pas si c'est un bug ou que j'ai pas compris quelque chose:
Mon problème:
dans le controlleur, je parcours mon tableau avec :
foreach($tab_historique as $val){ }
Ensuite j'assigne ce tableau à mon template :
$tpl->assign('tab_log', $tab_historique);
Puis je refais un foreach dans mon template:
{foreach($tab_log as $val)} Du texte {/foreach}
Résultat: Rien ne se passe, dans le template aucun élément du tableau n'est parcouru. si j'enleve le foreach du controller, le foreach du template arrive à se dérouler normalement.
Cela se vérifie même si aucune commande n'est effectué dans le foreach du controlleur.
Comment puis-je faire pour effectuer mon foreach dans mon template tout en effectuant auparavant celui du controlleur?
Cordialement, Wolf
[Opened] Re: problemes Foreach controller/template
Posted by laurentj on 02/14/2008 11:30
bonjour,
Bon d'abord, les parenthèses sont inutiles
{foreach $tab_log as $val}
Ensuite, ce que renvoi les dao/jdb n'est pas un tableau, mais un itérateur ;-) Car je suppose que $tab_historique est un resultat de dao ou de jdb n'est-ce pas ?
Aussi, je ne sais pas : est ce que foreach fait un rewind sur l'iterateur avant de commencer la boucle ? On dirait que non apparement (gloups). À moins que ce soit un problème de l'implémentation de l'itérateur, donc du driver db utilisé.
À vérifier.
Un solution serait de faire un rewind après ton premier foreach
$tab_historique->rewind();
Sinon une deuxième solution : en général, on crée un tableau dans le premier foreach, surtout si on compte modifier dans cette boucle les objets du tableau (modification qui serait alors perdus puisque une deuxième boucle ramène à nouveau les enregistrements directements de la base de donnée)
- 1