Quick links: Content - sections - sub sections
EN FR
Quick Search Advanced search
 
Page

  [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

Reply #1 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)

 
Page
  1. Re: problemes Foreach controller/template