[Frage] Mini-Extension soll XML auslesen

  • OCB OCB
    R2-D2
    0 x
    74 Beiträge
    0 Hilfreiche Beiträge
    19. 12. 2016, 17:17

    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)

    1. public function listAction() {
    2.  
    3. $url = $this->settings['xmluri'];
    4. $xml = simplexml_load_file($url) or die("Error: Cannot create object");
    5. // print_r($xml);
    6.  
    7. foreach ($xml->children() as $item) {
    8. $xmlTree[] = $item->Title;
    9. }
    10.  
    11. $this->view->assign('xml', $xmlTree);
    12.  
    13. }

    Im Fluid-Template kann ich damit den Titel ausgeben.

    1. <f:for each="{xml}" as="item">
    2. <h3>{item}</h3>
    3. </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? :-)

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

    Gruß
    OCB


  • 1
  • jenses jenses
    Flash Gordon
    0 x
    3087 Beiträge
    106 Hilfreiche Beiträge
    20. 12. 2016, 08:19

    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 OCB
    R2-D2
    0 x
    74 Beiträge
    0 Hilfreiche Beiträge
    20. 12. 2016, 12:25

    Zitiert von: 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.

    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:

    1. $xml = simplexml_load_file($url) or die("Error: Cannot create object");
    2. $json = json_encode($xml);
    3. $js = json_decode($json,TRUE);
    4. $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 ;)

  • 1