[erledigt] Verschachtelte Arrays im Template

In diesem Forum kann man Fragen zur Programmierung stellen, die bei der Entwicklung von Mods für phpBB 3.0.x oder dem Modifizieren des eigenen Forums auftauchen.
Forumsregeln
phpBB 3.0 hat das Ende seiner Lebenszeit überschritten
phpBB 3.0 wird nicht mehr aktiv unterstützt. Insbesondere werden - auch bei Sicherheitslücken - keine Patches mehr bereitgestellt. Der Einsatz von phpBB 3.0 erfolgt daher auf eigene Gefahr. Wir empfehlen einen Umstieg auf phpBB 3.1, welches aktiv weiterentwickelt wird und für welches regelmäßig Updates zur Verfügung gestellt werden.
Antworten
Jonnsn
Mitglied
Beiträge: 88
Registriert: 05.02.2007 22:09

[erledigt] Verschachtelte Arrays im Template

Beitrag von Jonnsn » 24.11.2009 22:33

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ß
Zuletzt geändert von Jonnsn am 25.11.2009 13:25, insgesamt 1-mal geändert.

Benutzeravatar
nickvergessen
Ehrenadmin
Beiträge: 11559
Registriert: 09.10.2006 21:56
Wohnort: Stuttgart, Germany
Kontaktdaten:

Re: Verschachtelte Arrays im Template

Beitrag von nickvergessen » 25.11.2009 01:21

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 -->
kein Support per PN

Jonnsn
Mitglied
Beiträge: 88
Registriert: 05.02.2007 22:09

Re: Verschachtelte Arrays im Template

Beitrag von Jonnsn » 25.11.2009 10:51

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ß

Benutzeravatar
nickvergessen
Ehrenadmin
Beiträge: 11559
Registriert: 09.10.2006 21:56
Wohnort: Stuttgart, Germany
Kontaktdaten:

Re: Verschachtelte Arrays im Template

Beitrag von nickvergessen » 25.11.2009 10:53

Könntest du mal deine Arrays zeigen?
kein Support per PN

Jonnsn
Mitglied
Beiträge: 88
Registriert: 05.02.2007 22:09

Re: Verschachtelte Arrays im Template

Beitrag von Jonnsn » 25.11.2009 11:00

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...

Benutzeravatar
nickvergessen
Ehrenadmin
Beiträge: 11559
Registriert: 09.10.2006 21:56
Wohnort: Stuttgart, Germany
Kontaktdaten:

Re: Verschachtelte Arrays im Template

Beitrag von nickvergessen » 25.11.2009 11:24

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 ;)
kein Support per PN

Jonnsn
Mitglied
Beiträge: 88
Registriert: 05.02.2007 22:09

Re: Verschachtelte Arrays im Template

Beitrag von Jonnsn » 25.11.2009 11:56

ähm - ja :grin: da hab ich wohl wieder zu kompliziert gedacht. Works like a charm :geek:

Vielen Dank!

Gruß

Antworten

Zurück zu „[3.0.x] Mod Bastelstube“