Smarty Schleifen

Grunge

Erfahrenes Mitglied
Huhu,

ich nutze die Smarty Engine, um mit Templates zu arbeiten.

Code:
https://www.smarty.net/docsv2/de/language.function.foreach.tpl

Soweit so gut. Ich bin jetzt am rum-rotieren was die schleifen probiert und komme einfach nicht klar. Wahrscheinlich ist der Fehler wieder mal so banal...

Also es geht um ein Newsscript. Die News werden in der news.php aus der DB geholt

PHP:
//DB - zugriff ....
$timeline = array();
$i = 0;
while($row = $result->fetch_assoc()){
    $timeline[] = array(
                "type" => $row['timeline_type'],
                "text" => $row['timeline_text'],
                "usr"  => $row['timeline_usr']
    );
   
 
   
}

Aber wie bekomme ich das ganze jetzt an Smarty?
Das hier funktioniert nicht:

PHP:
$tpl -> new SMTemplate();
$tpl -> render('timeline', $timeline);

Complier gibt nix aus, nur eine nette Fehlermeldung im Browser:
Fatal error: Uncaught Error: Call to a member function assign() on null in /www/htdocs/w0171b92/tech-ben.de/social/php/home.php:8 Stack trace: #0 /www/htdocs/w0171b92/tech-ben.de/social/index.php(34): include() #1 {main} thrown in /www/htdocs/w0171b92/tech-ben.de/social/php/home.php on line 8

Ich hoffe ihr könnt helfen

Liebe Grüße
 
Ich verstehe deine Fragen nicht ?

mit

Code:
[LIST=1]
[*]$tpl -> new SMTemplate();
[*]$tpl -> render('timeline', $timeline);

übergebe ich das Array $timeline (siehe oben) an das Template timeline.tpl. Ist von Smarty so vorgegeben. Und funktioniert bei allen anderen Templates auch!

Ich habe es jetzt einfach so probiert auszugeben:

Code:
{foreach from=$timeline item=jo}
    {$jo}<br>
  {/foreach}

Funktioniert natürlich nicht, bzw kommt nix!

https://www.smarty.net/docsv2/de/language.function.foreach.tpl

Das sagt Die Doku dazu!
[/LIST]
 
Ah. So sieht dein Templatefile aus.
Was ist SMTemplate? Ich kenne diese Klasse nicht. Smarty ist es auch nicht direkt.
Für Smarty müsste es ja so aussehen
PHP:
$tbl= new Smarty();
$tpl->assign('timeline', $timeline);
$smarty->display('timeline.tpl');

Zudem ist {$jo} bei deinem Datenaufbau ein Array und kein Wert. Siehe Beispiel "Example 7.6. {foreach} - item und key" in deinem Link zur Anleitung
 
Dein Lösungsvorschlag hatte ich auch schonmal probiert...

Ich bekomme jetzt folgenden Fehler

Fatal error: Uncaught Error: Call to a member function display() on null...

Code:
$data = array(
  'vorname' => vorname($_SESSION['ID']),
  'nachname' => nachname($_SESSION['ID']),
  'img' => getprofilbild($_SESSION['ID']),
  'id' => $_SESSION['ID']   
);


$tpl= new Smarty();
$tpl->assign('timeline', $data);
$smarty->display('timeline.tpl');

Zeile 13 ist die letzte...
 
Mein C&P Fehler.
Dein Objekt heisst nicht $smarty sondern $tpl.

Aber meine Frage bleibt. Was ist SMTemplate?
Du brauchst es jetzt einfach nicht mehr. OK. Irgendwie beschleicht mich das Gefühl, du kopierst irgendwoher und hasst keine Ahnung was du tust.
Hast du schon ein funktionierendes Smarty-Template mit einer einfachen Variablen? Also ohne Schleife, nur ein einfacher Wert? Wenn nicht: lerne erst zu laufen bevor du fliegen lernst.
 
Ich habe bereits mehrere Seiten der Webseite mit genau dieser Methode geschrieben Yaslaw. Das Problem liegt nun einzig und allein darin, dass ich das Array einfach nicht ausgegeben bekomme
 
Dann umso mehr. Wenn du bei den anderen Seiten mit SMTemplate gearbeitet hast, dann bleib dabei.
Da ich aber nicht weiss, was SMTemplate ist, würde es unglaublich helfen beim helfen, wenn du mal schreiben würdest was denn SMTemplate ist. Ich Frage auch erst zum dritten mal danach.

Wenn du bei den anderen mit der smarty-Klasse gearbeitet hast, analog zu meinem Beispiel, dann korrigiere meinen Fehler, und schreib dann obs funktioniert.
Mein C&P Fehler.
Dein Objekt heisst nicht $smarty sondern $tpl.
Ergibt in meinem Beispiel
PHP:
$tbl= new Smarty();
$tpl->assign('timeline', $timeline);
$tpl->display('timeline.tpl');
Funktioniert das?
 

Neue Beiträge

Zurück