Mit Fluid das letzte Element eines Arrays ausgeben [Gelöst]

  • NJoyLife NJoyLife
    R2-D2
    0 x
    83 Beiträge
    1 Hilfreiche Beiträge
    17. 01. 2013, 16:18

    Hallo zusammen

    Ist es möglich, mit Fluid aus einem Array nur das erste (oder das letzte) Element anzuzeigen?

    Vielen Dank und einen schönen Gruß
    NJoyLife


  • 1
  • kainobi kainobi
    Jedi-Ritter
    0 x
    141 Beiträge
    0 Hilfreiche Beiträge
    17. 01. 2013, 17:21

    Wenn es wirklich ein Array ist, kannst Du das Erste mit {deinArray.0} auslesen. Willst Du das Letzte haben, musst Du Dir IMO einen ViewHelper schreiben.

  • NJoyLife NJoyLife
    R2-D2
    0 x
    83 Beiträge
    1 Hilfreiche Beiträge
    17. 01. 2013, 20:37

    Hi kainobi

    Danke für die Rückmeldung.
    Leider klappt das mit der Ausgabe nicht ganz so wie gewünscht. Vermutlich, weil es sich um kein Array, sondern um ein Objekt vom Typ ObjectStorage handelt o.O
    Es besteht aus mehreren Kontakten. Jedem Kontakt ist ein Datum zugewiesen und das erste davon möchte ich auslesen. Meine Idee war die folgende:

    1. {firma.kontakt.0.datum}

    Das gibt aber ein leeres Ergebnis.

    Ein debug von {firma.kontakt} gibt mir für Kontakt ein Objekt vom Typ TYPO3\CMS\Extbase\Persistence\ObjectStorage aus.

    Was ich suche ist dann wohl nicht, wie man das erste Element eines Arrays anspricht, sondern das eines ObjectStorage.

    Kannst du da auch weiterhelfen?

    Vielen Dank und viele Grü0e
    NJoyLife

  • sunixzs sunixzs
    R2-D2
    0 x
    123 Beiträge
    2 Hilfreiche Beiträge
    17. 01. 2013, 22:45

    Hallo,

    evtl. mal die Methoden der Klasse in PHP ausgeben - vllt. gibt's da sowas wie getFirst()

    1. echo get_class_methods($myObject)

    Dann einfach das erste ins Fluid mitgeben:

    1. $this->view->assign("myFirstObject", $myObject->getFirst())

    Oder sowas in der Art (in der Action oder in einem ViewHelper):

    1. // Typisierung ändern
    2. $myArray = (array) $myObject;
    3. echo reset($myArray);
    4.  
    5. // oder keys umwandeln
    6. $myArray = iterator_to_array($myObject);
    7. echo reset($myArray);

    LG sun

  • kainobi kainobi
    Jedi-Ritter
    0 x
    141 Beiträge
    0 Hilfreiche Beiträge
    18. 01. 2013, 08:20

    Drum hab ich geschrieben "wenn es wirklich ein Array ist" ;-)

    Für ObjectStorage brauchst Du definitiv einen VH, weil der ObjectStorage die "Keys" aus spl_object_hash bildet. Deshalb kannst Du sie nicht mit 0 1 etc. ansprechen.

    getFirst() hat der ObjectStorage nicht!

    Edit - Workaround ohne VH:

    1. <f:for each="{firma.kontakt}" as="kontakt" iteration="i">
    2. <f:if condition="{i.cycle} == 2"></f:if>
    3. </f:for>

    Ob die Condition so stimmt, bin ich mir jetzt nicht sicher, aber ich denke es ist klar was ich meine...

  • NJoyLife NJoyLife
    R2-D2
    0 x
    83 Beiträge
    1 Hilfreiche Beiträge
    18. 01. 2013, 09:07

    Hi kainobi

    Sehr clevere Lösung 8-)! Hat bestens funktioniert. Danke!

    Gruß
    NJoyLife

  • 1