Smarty & Array OHNE index

pnx

Mitglied
HI beisammen,

zu meinem Problem. In einem Array sollen währen ein Script durchlaufen wird mehere Strings eingespeichert werden. Es steht vorher nicht fest wieviele Strings in den Array gespeichert werden müssen.

PHP:
$der_array[] = "Text1";
$der_array[] = "Text2";
$der_array[] = "Text3";
$der_array[] = "Text4";
$der_array[] = "Text5";

Wenn ich jetzt den Array "assigne" kapier ich nicht wie ich im Template dann alle, Strings ausgeben kann, da mir der Index ja fehlt.

Eine unschöne Lösung wäre:
Code:
{ $var.0 }
{ $var.1 }
{ $var.2 }
.
.
.
{ $var.n }

Aber es muss noch eine Lösung per loop oder foreach innerhalb des Templates geben.
Ansonsten fällt mir nur ein im php schon alle Strings zu einem String zusammenzufassen und diesen dann auszugeben, was mir allerdings auch nicht sehr gefällt.

pnx
 
Naja, durchlaufe den Array mit PHP ([phpf]while[/phpf], [phpf]for[/phpf]) und rufe das Template mehrere male auf... Wuerde das gehen?
 
Hm, wäre eine Möglichkeit an die ich vorher noch garnicht gedacht habe, Danke. Für den Moment handhabe ich es so:

PHP:
foreach($der_array as $val)
                    {
                        $alles_hier_drin .= $val."<br/>";
                    }

Und dann "assigne" ich "$alles_hier_drin". Nachteil ist hier sicherlich, dass nicht der HTML-Code aus PHP gehalten wird, was ja eigentlich der Sinn eines Templates sein sollte, allerdings ist es bei kleineren HTML-Fetzen noch zu verkraften.

Ich dachte nur es gäbe auch die Möglichkeit diesen Effekt auch im Template zu bewirken, allerdings ist mir das bisher nicht gelungen, da Smarty sofort einen Error auspuckt wenn ich keinen index im Template angebe. Eine Zählvariable die ich dann als index verwenden könnte ist meines wissens in smarty ja nicht möglich.

pnx
 
Zuletzt bearbeitet:
Mhh ich weiß jetzt nicht ob ich das Problem richtig verstanden habe, aber in Smarty sind doch die gesuchten Funktionen enthalten:

PHP:
// PHP Code
$texte[] = 'Punkt 1'];
$texte[] = 'Punkt 2'];
$texte[] = 'Punkt 3'];
$texte[] = 'Punkt 4'];
$texte[] = 'Punkt 5'];

$smarty->assign ('texte', $texte);


// Smarty Template:
{section name="i" loop=$texte}
{$texte[i]}
{/section}
 
Zurück