Seite 1 von 1

[erledigt] Verschachtelte Arrays im Template

Verfasst: 24.11.2009 22:33
von Jonnsn
Guten Abend,

Ich versuche in einem Modul für das ACP dem Template einen Block mit mehreren Arrays zu übergeben
etwa so:

Code: Alles auswählen

$template->assign_block_vars('block.data', $ArrayMitArrays);
Im Template entsprechend:

Code: Alles auswählen

<!-- BEGIN block.data -->
		{block.data.VALUE}
<!-- END block.data -->
Beim Aufruf der Seite bekomme ich aber:
Parse error: syntax error, unexpected '=' in [...]/includes/template.php(218) : eval()'d code on line 24
Die template.php entspricht exakt der des aktuellen Pakets (3.0.6).

Irgendeine Idee wo da der Wurm drin sein könnte? hab ich das mit verschachtelten Schleifen falsch verstanden? :-?

Danke und Gruß

Re: Verschachtelte Arrays im Template

Verfasst: 25.11.2009 01:21
von nickvergessen
Das ist phpbb2.
In phpBB3 geht das circa so:

Code: Alles auswählen

foreach ($ArrayMitArrays as $array)
{
	$template->assign_block_vars('block', array());
	foreach ($array as $ary)
	{
		$template->assign_block_vars('block.data', $ary);
	}
}

Code: Alles auswählen

<!-- BEGIN block -->
	<!-- BEGIN data -->
		{block.data.VALUE}
	<!-- END data -->
<!-- END block -->

Re: Verschachtelte Arrays im Template

Verfasst: 25.11.2009 10:51
von Jonnsn
Hallo,

Vielen Dank! Das könnte man in dem KB Artikel etwas kenntlicher machen :)
Jetzt bekomme ich dabei immerhin eine andere Fehlermeldung:
Fatal error: Cannot unset string offsets in [...]/includes/template.php on line 481
Das ist folgender Code-Teil

Code: Alles auswählen

			$vararray['S_LAST_ROW'] = true;
			if ($s_row_count > 0)
			{
				unset($str[$blocks[$blockcount]][($s_row_count - 1)]['S_LAST_ROW']);
			}
Wenn ich mir in den Schleifen etwas ausgeben lasse, sehe ich dass der Fehler wohl beim dritten Wert im ersten Array kommt - die beiden vorher werden ausgegeben. Nur bringt mich das nicht viel weiter... ist ein numerischer Wert, wie der zweite auch.
Zum Fehler habe ich bisher auch nichts gefunden das mich wirklich weiterbringt.
Vlt hat ja hier nochmal jemand einen Tip :geek:

Gruß

Re: Verschachtelte Arrays im Template

Verfasst: 25.11.2009 10:53
von nickvergessen
Könntest du mal deine Arrays zeigen?

Re: Verschachtelte Arrays im Template

Verfasst: 25.11.2009 11:00
von Jonnsn
Ich wills versuchen ;)
Das ist das erste Array

Code: Alles auswählen

$text=array();
Das wird im Zuge einer MySQL Abfrage mit Daten befüllt (je Row ein Array mit den Daten)

Code: Alles auswählen

array_push($text,array(
					'TEXT'  => isset ($curRow['value']) ? $curRow['value'] : '',
					'XPOS'  => isset ($curRow['xPos']) ? $curRow['xPos'] : 0,
					'YPOS'  => isset ($curRow['yPos']) ? $curRow['yPos'] : 0,
					'FONT'  => isset ($curRow['font']) ? $curRow['font'] : '',
					'COLOR'  => isset ($curRow['color']) ? $curRow['color'] : '#000000',
				));
Gebe ich mir das ganze so aus

Code: Alles auswählen

foreach($text as $a){
			echo $a.'<br>';
			foreach($a as  $key => $t){
				echo $key.': '.$t.'<br>';
			}
		}
funkioniert es auch. Anschließend käme eben der Teil:

Code: Alles auswählen

foreach ($text as $array){
			echo $array.' ===== <br>';
			$template->assign_block_vars('data', array());
			foreach ($array as $val){
				echo $val.'<br>';
				$template->assign_block_vars('data.text', $val);
			}
		}
wo er nach dem zweiten

Code: Alles auswählen

echo $val.'<br>';
nur noch den Fehler wirft...

Re: Verschachtelte Arrays im Template

Verfasst: 25.11.2009 11:24
von nickvergessen

Code: Alles auswählen

while ($row = $db->sql_fetchrow($result))
{
	$template->assign_block_vars('data', array(
		'TEXT'  => isset ($row['value']) ? $row['value'] : '',
		'XPOS'  => isset ($row['xPos']) ? $row['xPos'] : 0,
		'YPOS'  => isset ($row['yPos']) ? $row['yPos'] : 0,
		'FONT'  => isset ($row['font']) ? $row['font'] : '',
		'COLOR'  => isset ($row['color']) ? $row['color'] : '#000000',
	));
}
Sollte da schon völlig ausreichen ;)

Re: Verschachtelte Arrays im Template

Verfasst: 25.11.2009 11:56
von Jonnsn
ähm - ja :grin: da hab ich wohl wieder zu kompliziert gedacht. Works like a charm :geek:

Vielen Dank!

Gruß