Bonjour, bonsoir,
Je butte sur un probleme d'affichage d'un smarty.
Une de mes classes contient une méthode qui se sert de smarty pour l'affichage. Ayant plusieurs instances de cette classe, je désire, sur mes pages, afficher autant de fois ce template que d'objets instanciés. Jusque là c'est logique.
La méthode remplie son office, le template fonctionne (vive l'attribut debugging de Smarty). Tout fonctionne oui, mais une seule fois seulement... :'(
Je n'ai pour l'instant que deux de ces objets instanciés, j'en aurai plus par la suite. Après l'affichage du premier template, le deuxième n'apparait pas, même pas dans la console de debogage de smarty...
Voilà quelques partie des scripts:
Extrait de la classe:
voilà le template margemenu.tpl
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22 <?php class newsMenu{ protected $Name; function margeMenu($text){ $Marge=array(); $req="SELECT id,about,titre,auteur,DATE_FORMAT(Date,'%d/%m/%Y') Date FROM tablenews WHERE TIMESTAMPDIFF(MONTH,Date,NOW())<=1"; $exec=$this->Connect->query($req,$this->fetchMode); $Marge=$exec->fetchAll(); if(count($Marge)){ $smarty=$this->setSmarty(); $smarty->assign('titre',$text); $smarty->assign('Menu',$Marge); $smarty->assign('name',$this->Name); $smarty->display('margemenu.tpl'); } } } ?>
et pour finir, l'appel de la methode pour mes deux objets stockés dans un tableau.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10 <div class="margeitem"> <h1>{$titre}</h1> <ul class="list"> {foreach from=$Menu item=Line} <li><a href="{$name}-{$Line.id}" title="par {$Line.auteur} le {$Line.Date}"><span class='about'>{$Line.about}:</span> {$Line.titre}</a></li> {/foreach} <li class="mini"><a href="news">{$name}</a></li> </ul> </div>
1ere tentative:
Deuxieme tentative, manuelle:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 foreach($tab_obj as $key=>$obj){ $obj->margeMenu('objet'.$key); }
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 $tab_obj[1]->margeMenu('objet1'); $tab_obj[2]->margeMenu('objet2');
Dans les deux cas, seul le premier objet s'affiche.
Je pense qu'il s'agit d'une histoire de fichier de compilation mais la doc est plutot floue à ce sujet. Si quelqu'un pouvait m'enlver cette epine du pied, je lui en serai très reconnaissant. Bien maigre salaire mais enoooorme gratitude.
Merci![]()
Partager