Zum Inhalt springen

Extbase Fluid Verschachtelte Objekte

Erstellt am 4. Oktober 2010 · 4 Antworten · letzte Antwort am 10. Dezember 2010

Tags: Frage

waldosparding ·

Hallo zusammen,

ich habe eine einfache Liste von Datenbankeinträgen. Jedem Eintrag kann eine Kategorie zugwiesen werden.
Jetzt möchte ich ein Listing aller Einträge mit der dazugehörigen Katekorie. Kategorie ist als MM-Beziehung realisiert.

Also: z.B.

Name     Vorname     Kategorie
Müller   Martin      Bekannte
Schmidt  Theo        Verwandte

etc.

Im vom Kickstarter erzeugten Listing kann ich auf Name und Vorname zugreifen. Kategorie ist aber wiederum ein Objekt. Wie kann ich jetzt im Template auf die Eigenschaften des Objekt (Kategoriename) zufgreifen ?

vg
Waldo

rlp_immigrant ·
waldosparding schrieb

Wie kann ich jetzt im Template auf die Eigenschaften des Objekt (Kategoriename) zufgreifen ?

Du musst innerhalb der For-Schleife noch eine For-Schleife für die Kategorien machen.

typonewbe ·

Hi,

ungefähr so:

{person.vorname}, {person.nachname}<br  />

<f:for each="{person.kategorie}" as="kategorie" >
    {kategorie.name}
</f:for>

Gruß typonewbe

waldosparding ·

Danke für die Antworten, aber das ist nicht das was ich gesucht habe.

Da es sich um eine MM-Relation handelt, befindet sich in der Datenbank ja nur ein Verweis (uid der Kategorie).

Wie komme ich jetzt sauber an der Kategorie-Namen. Ich habe in EXTBASE keinen dirkten Weg gefunden über die eingebauten Query-Funktionen.

Gelöst habe ich es jetzt, in dem ich in der Repository-Klasse den Query selbst aufbaue, aber das kann ja nicht im Sinne von EXTBASE sein.

vg

typonewbe ·

Hi,

ok so ganz verstehe ich dich nicht, aber genau so sollte es sein.

Gib im Fluid Template einfach mal.
<f:debug>{person}</f:debug> oder wie auch immer dein Object heißt ein.

Dann solltest du ein Array sehen in dem zu jeder Person auch die Kategorie zu sehen ist.

Falls dies nicht der Fall ist dann kannst du dir im Repository deine Abfrage zusammenbauen.

ein Bsp. aus dem Buch TYPO3 Extensions mit Extbase und Fluid auf Seite 149 🙂 etwas an dein Problem angepasst.

//im PersonRepository

public function findInCategory(Tx_yourYourExt_Domain_Model_Category $category) {
    $query = $this->createQuery();
    $query->matching($query->contains('category', $category));
    return $query->execute();
}

Und in deiner Action sollte es dann so klappen

     $personincategory = $this->personRepository->findInCategory($category);

Nagle mich aber nicht darauf fest 😉

Vielleicht hilft dir das ja weiter.

Gruß typonewbe