Hallo zusammen,
ich habe eigentlich nur ein banales Problem, bekomme es jedoch nicht gelöst.
Ich habe in meiner setup.txt meiner eigenen Extension (in Typo3 v6.2.5) unter
ein assoziatives array angelgt.
...
settings {
infoEmailAddresses {
addresses = array ('Max Muster' => 'Max.Muster@gmx.de', 'James Bond' => 'James.Bond@gmx.de')
}
}
...
Auf dieses array möchte ich jetzt gerne in einer eigenen Klasse (kein Controller) zugreifen und in einer
foreach-Schleife
foreach($myArray as $name => $emailAddress){...}
verarbeiten.
Wenn ich mit
$myArray = $this->settings['infoEmailAddresses']['addresses'];
mir die Variable holen möchte, bekomme ich nur einen String anstatt eines Array zurückgeliefert.
Wie kann ich daraus ein array machen, das ich mit der foreach-Schleife dann verarbeiten kann?
Mhhh ich habe noch nie direkt PHP in Typoscript reingeschrieben. Soweit ich weiß wird das natürlich auch nicht direkt als PHP ausgewertet, weil das so einfach nicht angedacht ist. Hast Du in PHP mal probiert mit eval() den String auszuwerten?
Ich habe bereits viele Sachen ausprobiert, auch mir einmal mit gettype($myArray) den Typ der Variablen auszugeben. Dabei bin ich darauf gestoßen, dass das kein Array, sondern nur ein String ist.
Vielleicht ist aber auch mein Ansatz ganz falsch. Ich wollte eigentlich nur in einer Vorab-Konfiguration meiner Extension Namen mit entsprechenden Email-Adressen hinterlegen, die ich im Anschluss daran innerhalb meiner Extension verwenden kann. Da die Anzahl der Email-Adressen und Name jedoch nicht fix sein soll, wollte ich diese einfach in ein Array packen.
Hat deine Erweiterung vielleicht Eingabemasken, in denen Du das konfigurierbar machen könntest?
Ich habe zwar FlexForm-Felder, aber die wollte ich dafür eigentlich nicht verwenden. Ich bräuchte dann zu viele Felder, die das ganze dann wieder ziemlich unübersichtlich machen würden (so etwa für 20 Namen zzgl. deren Email-Adressen). Mit Konstanten komme ich leider auch nicht weiter, da ich gerade gelesen habe, dass es hier keinen Typ Array gibt. Ich befürchte fast, dass ich mir eine eigene Funktion schreiben muss, die mir den String aus der setup.txt in ein array verwandelt. Oder gibt es noch eine elegantere Lösung???
Und eval() geht nicht ja? Ansonsten schreibs als kommaseparierten String ins Typoscript und teil den in PHP per explode() in ein Array auf :-)
eval() hat leider nicht funktioniert, bin aber auch gerade dabei, mit explode() wie oben beschrieben das in einer eigenen Funktion zu machen.
Arrays in Typoscript sind aufgebaut wie folgt:
...
settings {
infoEmailAddresses {
addresses {
1 {
name = Max Muster
email = Max.Muster@gmx.de
}
2 {
name = James Bond
email = James.Bond@gmx.de
}
}
}
}
...