Kalma
Erfahrenes Mitglied
Hallo,
habe mir eine neue Template Klasse geschrieben und auch eine Forschleife, die leider nicht läuft.
So soll sie aufgerufen werden:
Der KlassenCode sieht so aus:
rightDelimiterF und leftDelimiterF sind lediglich { und } zum einleiten einer Funktion
habe mir eine neue Template Klasse geschrieben und auch eine Forschleife, die leider nicht läuft.
So soll sie aufgerufen werden:
PHP:
$peter = array();
$peter['autor'] = 'Peter Lustig';
$peter['titel'] = 'my Life';
$tpl->assign_array("book", $peter);
HTML:
{foreach $book}
{$autor} - {$titel}
{/foreach}
Der KlassenCode sieht so aus:
PHP:
public function assign_array($var, $replace)
{
$matches = array();
$search_for = '/\{foreach \$'.$var.'\}(.*?)\{\/foreach\}/si';
$keys = array_keys($replace, 0);
if(preg_match($search_for, $this->template, $matches)) {
$row = '';
foreach($replace AS $array)
{
$items = $matches[1];
foreach($keys AS $key)
{
$items = str_replace($this->leftDelimiterF.$key.$this->rightDelimiterF, $array[$key], $items);
}
$row .= str_replace($matches[1], $row, $items);
$row = rtrim($row);
}
$all_rows = preg_replace('/\r\n/si', '', rtrim($row), 1);
$this->template = str_replace($matches[0], $all_rows, $this->template);
return true;
} else {
return false;
}
}
rightDelimiterF und leftDelimiterF sind lediglich { und } zum einleiten einer Funktion