Hallo zusammen,
ich stehe gerade, bzw. seit ein paar Tagen vor einem Problem, vielleicht kann mir jemand einen Tip geben? :-)
Am Besten erkläre ich es an dem populären "Blog-Beispiel":
- Ich habe eine EXT "simpleblog". Diese Extension kann nur Blogs anlegen und in einer Liste und einer Detailansicht darstellen.
- Ich habe dann noch eine EXT, z.B. "simpleblog_posts". Wird diese Erweiterung installiert, soll es zusätzlich möglich sein Einträge innerhalb eines Blogs zu schreiben und anzusehen.
Grundsätzlich möchte ich eine "Basis-EXT" haben, welche ich mittels weiterer Extensions um Funktionen erweitern kann.
Aktuell bin ich soweit, dass ich das "Model" des Objekts "Blog" um die Relation zu "Posts" mittels einer zweiten Extension erweitern kann. Das funktioniert genau bis dahin, bis ich ein Objekt, z.B. einen Blog, von einer Extension zur anderen weitergeben müsste.
Z.B. möchte ich einen Post erstellen, dafür benötige ich das Blog-Objekt. Ich reiche das Objekt mittels "arguments" durch und verlinke auf die action "add" im Controller "Post" in der anderen Extension - mein Objekt "Blog" ist nicht vorhanden.
Hat jemand ggf. einen Lösungsansatz für mich? Ist das generell überhaupt möglich etwas so modular aufzubauen?
Ich bin für jeden Tipp dankbar :-)
Prinzipiell sollte das machbar sein.. hast du denn ganz sicher ein valides Blog-Objekt und es auch richtig im PostController deklariert? In dem Fall sollte deine addAction eigentlich eine Exception ausgeben, falls das Blog-Objekt nicht korrekt übergeben wird.
Poste doch mal die betroffenen Funktionen, dann sollte erkennbar werden, ob/wo was fehlt.
Ah, jetzt hab ich's... doofer Fehler!
Im Extension-Builder habe ich lediglich das zu erweiternde Model angegeben, die Tabelle dagegen nicht. Nachdem ich die Tabelle auch mit angegeben habe, hat es soweit funktioniert :-)
Nun bin ich zwar einen Schritt weiter, habe jetzt aber folgendes Problem:
Wie oben gesagt, habe ich eine "Basis-EXT" mit dem Objekt "Blog". Ich habe mehrere Extensions, die das Objekt "Blog" nun erweitern sollen. Durch das Feld "tx_extbase_type", scheint es mir aber so, dass ich immer nur die Daten einer Erweiterungs-EXT bekomme (also die Daten der EXT, welche in der TCA im Feld "tx_extbase_type" ausgewählt ist) und nicht alle Daten... :-(
Hat dazu auch jemand einen Tip?
Im Normalfall ist es auch so, dass ich abhängig vom Typ-Feld (tx_extbase_type), nur die entsprechenden Felder in der TCA sehe, das konnte ich mir abändern, den Rest nur nicht :-(
Vielen Dank!
Moin,
könnte das eventuell funktionieren, wenn du statt deines Basis-Modells Blog dein Erweiterungs-Modell ExtendedBlog erweiterst, sodass dein 3. Modell alle weiteren Attribute erhalten müsste ?
Gruß
Hmm, ich glaube so kann ich es dann leider nicht brauchen..
Das Blog-Beispiel passt vielleicht nicht ganz... anderer Versuch:
Nehmen wir als Basis-Modell einen Artikel.
- Die 1. EXT legt den Basis-Artikel mit Nr., Name und Bild fest
- Ist die 2. EXT installiert, kann zusätzlich noch eine Artikelbeschreibung hinterlegt werden
- Mit der 3. EXT können Staffelpreise hinterlegt werden
- Mit der 4. EXT .....
Also ich möchte da relativ variabel sein. Nun ist es aber mit dem Feld "tx_extbase_type" so, dass ich im Artikel nur einen Typ auswählen kann, d.h. ich habe immer die Daten der 1. EXT + Daten aus einer der Folgenden aber niemals alle Daten zusammen verfügbar.
Zu welchem zweck willst du da variabel sein BZW. warum bist du, wenn dein Artikel alle Attribute hat ( die du zur Not nicht benutzen musst bzw. ausblenden kannst ) weniger Variabel?
Ich würde das alles in einem Model realisieren, es sei denn du hast gute Gründe dagegen ( und die haben sich mir bisher nicht erschlossen 😉 ).
Ok, gute Gründe..
Das zu entwickelnde Produkt soll Modular aufgebaut sein und Features sollen "per Klick aktiviert" werden können. Wenn nun später eine zusätzliche Funktion dazugebaut werden soll, soll diese auch in ein separates Modul (EXT) ausgelagert werden, sofern dies auch als Modul betrachtet werden kann (z.B. Cross-Selling).
Daraus entsteht dann irgendwann ein Standard-Produkt.
Nächstes Beispiel:
Bei der Einführung in Firma A, werden zusätzliche Felder benötigt und bestimmte Abläufe sollen anders sein, als diese aktuell sind. Dann bleiben alle bisherigen Modul bestehen um die Updatefähigkeit sicher zu stellen und die Anpassungen werden in einer neuen EXT gemacht. Hierbei muss dann eben auch wieder ggf. das Model erweitert werden. Anpassungen im Code selbst können ja mittels Signal Slots gemacht werden.
Haben sich dir die Gründe erschlossen? :-)
Puh, ich verstehe zwar deinen Ansatz... aber ob das so ne gute Idee ist, sowas wie Cross-Selling in eine eigene Extension zu prügeln (warum nicht als Plugin der gleichen Extension ? Kann auch per Klick aktiviert werden 😉) ?
Ich glaube aufgrund der fehlenden multiplen Vererbung dürfte das nicht möglich sein, abgesehen davon, dass ich diesen Ansatz generell fragwürdig finde. Für dein Vorhaben hast du nach wie vor keine Nachteile, wenn du ALLE Artikel-Attribute auch in der Klasse Artikel unterbringst, und sie nicht unsinnigerweise "erweiterst" 😉 "Verwandte Produkte" sind schließlich Eigenschaften eines Artikels, und nicht erst eines ArtikelsMitVerwandtenProdukten. 😉
Insofern sorry, dass das nicht direkt hilfreich ist, aber vielleicht überlegst du dir nochmal, ob es da nicht bessere Wege gibt, um an dein Ziel zu kommen.
Ok, gut. Ich seh mir dann mal das mit den verschiedenen Plug-Ins innerhalb einer Extension an.
Ich bin in diesem Extbase-Umfeld noch relativ wackelig auf den Beinen und bin daher auch ziemlich froh, wenn ich die Meinung von jemand hören kann, der Ahnung davon hat ;-)
Also, danke, auch wenn es nur indirekt eine Hilfe war aber jede Hilfe ist besser als keine ;-)