[Frage] Relationen im Extension Builder

  • jochla jochla
    Jedi-Ritter
    0 x
    128 Beiträge
    0 Hilfreiche Beiträge
    18. 11. 2013, 11:08

    ich mach gerade meine ersten Gehversuche in der Extension-Entwicklung und habe in meinem "Test-Modell" folgende Relation:

    Auto (Modell, Farbe, ...) *..1 Hersteller (Name, ...)

    Im Backend habe ich entsprechende Datensätze angelegt.
    Beim Auto kann ich auch aus den angelegten Herstellern auswählen.
    Über die Plugin-List-Action soll im FE folgendes ausgegeben werden:

    Auto.Modell, Auto.Farbe, Hersteller.Name, ...

    Der Extension-Builder generiert dazu für das Auto das Template List.html, in dem aber die angelegte Relation zum Hersteller nicht berücksichtigt ist, d.h. Hersteller.Name wird nicht ausgegeben.
    Ist das grundsätzlich so, oder habe ich was falsch gemacht?
    Wie kann ich im Auto-List-Template auf das Hersteller-Repository zugreifen?

    Bin mit dem Thema über die TYPO3 Mailinglist noch nicht weitergekommen, und hoffe nun hier auf Hilfe. Vielen Dank schon mal im voraus!

    Gruß, Johannes.


  • 1
  • jochla jochla
    Jedi-Ritter
    0 x
    128 Beiträge
    0 Hilfreiche Beiträge
    18. 11. 2013, 15:03

    Problem gelöst, dank Hilfe von Steffen Müller in der TYPO3 Mailingliste:

    Du brauchst das Hersteller-Repository nicht für die Darstellung des Hersteller eines bestimmten Autos. Dein Auto besitzt bereits einen Pfad zum Hersteller {Auto.Hersteller}. Den Herstellernamen kannst Du im Template darstellen mit: {Auto.Hersteller.Name}

    Extbase (und damit auch Deine Extension) bilden hierbei ein Prinzip des Domain Driven Design ab. Dein Auto ist das "Aggregate Root" Deiner Domain. Über dieses Aggregate Root hast Du Zugriff auf alle anderen Teilaspekte des Autos, wie z.B. den Hersteller.

    Solltest Du die Hersteller unabhängig vom Auto benötigen, dann erst macht ein Hersteller-Repository Sinn. Üblicherweise würdest Du dann einen HerstellerController verwenden.

    Mein Fehler war, dass ich im Template nur "Hersteller.Name" geschrieben habe, anstatt "Auto.Hersteller.Name".

    Die erste Angabe ist Name der Relation aus dem "Auto-Objekt" (Aggregate-Root) im Domain Model, die zweite Angabe ist der Name des Objekts "Hersteller" zu dem die Relation besteht, und die dritte Angabe ist die Eigenschaft (das Feld) im Objekt "Hersteller" das ausgelesen werden soll.

    Ich hoffe diese Erklärung hilft auch anderen.

    Johannes.

  • 1