Zum Inhalt springen

Mini-Extension soll XML auslesen

Erstellt am 19. Dezember 2016 · 2 Antworten · letzte Antwort am 20. Dezember 2016

Tags: Fluid, Frage

OCB ·

Hallo miteinander,

ich habe eine Mini-Extension erstellt, die eine externe XML-Datei ausgeben soll. Im Backend gibt man eine URL ein, die dann weiter verarbeitet wird. Ich bin überrascht, dass das einigermaßen klappt, da meine erste Extension 🙂

Damit klappt es bisher ganz gut, aber ... (das aber kommt gleich)

	public function listAction() {

		$url = $this->settings['xmluri'];
		$xml = simplexml_load_file($url) or die("Error: Cannot create object");
		// print_r($xml);

		foreach ($xml->children() as $item) {
			$xmlTree[] = $item->Title;
		}
		
		$this->view->assign('xml', $xmlTree);

	}

Im Fluid-Template kann ich damit den Titel ausgeben.

	<f:for each="{xml}" as="item">
		<h3>{item}</h3>
	</f:for>

Der Punkt ist nun, wie ich an die anderen Elemente der XML-Datei rankomme, denn da gibt's noch weitere Nodes.

Was muss ich schreiben, damit ich das XML so ausgeben kann? Wie macht man das am besten, mag mir jemand helfen? :-)

	<f:for each="{xml}" as="item">
		<h3>{item.Title}</h3>
                <h3>{item.Teaser}</h3>
	</f:for>

Gruß
OCB

jenses ·

Es sollte dohc reichen, $xml an's Fluid-Template zu übergeben,
und dich dort dann per <f:for each=""> durch den Baum zu hangeln.
Dafür wurde Fluid ja schließlich entwickelt,
daß man eben nicht die Daten komplett in PHP aufdröseln muß,
sondern das nach Bedarf und flexibel im Template macht...

OCB ·
jenses schrieb

Es sollte dohc reichen, $xml an's Fluid-Template zu übergeben,
und dich dort dann per <f:for each=""> durch den Baum zu hangeln.

Das hatte ich natürlich schon probiert, aber es gelang mir nicht, das XML richtig zu übergeben, der Fluid-Debugger zeigt kein richtiges Array. Ich konnte aber das XML ins json-Format umwandeln:

$xml = simplexml_load_file($url) or die("Error: Cannot create object");
$json = json_encode($xml);
$js = json_decode($json,TRUE);
$this->view->assign('xml', $js);

Damit hat es nun geklappt, der Rest passiert nun im Fluid-Template.

Jetzt muss ich nur noch rausfinden, wie ich eine Sortierung hinkriege 😉