Datenbankeinträge im Joomla-Backend schreiben

  • Hallo Joomla-Community,


    ich kämpfe immer noch mit meiner Joomla-Komponente zur Verwaltung von Seminaren. Aktuell versuche ich, eine n:m-Beziehung in einem Modell abzubilden und kämpfe mal wieder damit, dass es gefühlt keine vernünftige Dokumentation zu Joomla 4 gibt - bitte korrigiert mich, wenn ich falsch liege.


    Es geht um folgendes: Ich verwaltet Seminare, die mehreren Kategorien zugeordnet sein können. Es handelt sich also um eine n:m-Beziehung. Es gibt 3 Tabellen: Seminare, Seminar2Kategorie und Kategorien. Hier jetzt meine Fragen:

    Ich kann nur auf eine Table-Klasse pro Model zugreifen - ist das korrekt? Worauf ich hinaus will - ich habe eine Table-Klasse für das Seminar, und das funktioniert auch prima, aber wenn ich auf die Seminar2Kategorie-Tabelle im Seminar-Modell zugreifen möchte, klappt das offenbar nicht.

    Wenn ich mir eine Datenbankabfrage erzeugen möchte, sagt mir PHPStorm, dass $this-getdbo() deprecated ist. Gibt es irgendwo eine Auflistung, wo man nachsehen kann, welche Funktionalitäten deprecated sind und was man ersatzeshalber verwenden kann? Und gibt es eine empfohlene Vorgehensweise, wie man hier vorgehen sollte?


    Ein zweites Problem liegt noch vor mir - die Seminare brauchen auch Termine. Die liegen auch in einer eigenen Tabelle. Ich möchte gerne im Backend im Seminar einen Button einbauen, der mehrere Termine anlegen kann. Ist dafür ein Repeatable Field der richtige Ansatz, oder wie würdet Ihr das lösen?


    Ich benutze im übrigen nicht die Joomla-Kategorien, da laut Doku jedes Seminar nur eine Kategorie haben kann, und die Daten außerdem regelmäßig neu beladen werden und ich die Zuordnung Kategorie->Seminar beibehalten will. Und das Grundgerüst für das Modul hat mir Component-Builder generiert.


    Vielen Dank für Eure Tipps,

    Holger

  • Wirklich helfen kann ich da auch nicht. Bezüglich Forum kann ich nur den Tipp geben, einzelne Fragen zu stellen und dabei deine bisherige Gesamt-Arbeit (Status Quo) eben öffentlich zu machen, bspw. auf GitHub, auf deinen Code zu referenzieren; damit man das schrittweise und codebezogen diskutieren kann. Viele Wege und Rom und so...


    Eine Dokumentation gibt es da nicht, weil sie innerhalb 2 Tagen auch wieder hinfällig wäre oder mit 500 Wenns und Abers zu spicken wäre. Letztlich bleibt dir in Hinblick auf Joomla 5 nichts anderes möglich, als immer auch die aktuellsten Developer-Versionen von Joomla 4.3 bzw. vielleicht auch 4.4 installiert zu haben, die Änderungen zu verfolgen und da im Code zu spicken und dann zu versuchen, ob das unter Joomla 4.2 auch schon funktioniert oder man programmiert seine eigene Komponente schon wenigsten unter Joomla 4.3. Die ist jetzt vom Core her codeseitig wenigstens weitgehend so weit, dass man sie als Basis für zukünftige Programmierung sehen kann. Na ja... mit ständigen Änderungen und Ausnahmen...


    Deprecated-Meldungen sind so hilfreich wie sie eben der entsprechende Nerd formuliert hat. Ein "use $this->getDatabase(); instead" oder "use Factory::getContainer()->get('DatabaseDriver')", nur um das Deprecated-Gemaule loszuwerden, wirst du selten finden oder erst, wenn du es sowieso schon selbst rausbekommen hast. Hilft nur z.B. nach der relevanten Methode getDbo() in den Core-Datien zu suchen und zu schauen, welchen neuen Weg die jetzt eben als "Fallback" verwendet oder vielleicht selbst noch gar nicht verwendet. Gibt es nämlich auch.


    Solche Suchen sind ja mit Visual Studio Code, wo man mehrere Joomla-Versionen-Ordner mit installierten(!) Joomlas im selben Workspace haben kann, nicht mehr ganz so nervig wie früher.


    Nur nebenbei: Natürlich kann man in einem Model diverse Tableklassen laden, ebenso wie man diverse Model-Klassen hier und da laden kann. Eigentlich sogar codetechnisch weniger kompilziert aussehend als früher, aber das muss man sich eben zusammensuchen, wenn man kein Professor ist, der das selbst eingebaut hat in Joomla. "Wie macht das der modernere Core? Welche use-Zeilen hat er jeweils drinnen? etc.pp."


    Grundvoraussetzung ist halt (leider) immer, dass man auch den jeweils neuesten Aufbau von Komponenten für seine eigene verwendet. Provider, Services, DI-Container, extends, implements, uses, automatischs Namespacing, DingsbumsAwareTraits etc. pp.


    Das gilt auch für andere Erweiterungsarten.


    Ich für meinen Teil als dummerweise auf Joomla spezialisierter Dienstleister für "kleine Kunden ohne fett Reibach" sehne jedenfalls den Tag herbei, an dem ich das Kapitel Joomla schließen kann. EIn paar Jahre sind das leider noch ;) So lange muss ich eben dran bleiben und/oder "error_reporting" mehr oder weniger runterschrauben bis es eben wirklich nicht mehr funktioniert und dann erst korrigieren.


    Da kann ich nebenbei das n3t-Debug-Plugin empfehlen für "seitenindividuelles Debuggen".

  • Wirklich helfen kann ich da auch nicht. Bezüglich Forum kann ich nur den Tipp geben, einzelne Fragen zu stellen und dabei deine bisherige Gesamt-Arbeit (Status Quo) eben öffentlich zu machen, bspw. auf GitHub, auf deinen Code zu referenzieren; damit man das schrittweise und codebezogen diskutieren kann. Viele Wege und Rom und so...

    Vielen Dank für Deine Antwort. Befriedigend ist das natürlich nicht, speziell dann, wenn man in die Joomla-Programmierung einsteigt. So langsam stellt sich bei mir sowas wie Verständnis ein - die PHP-Programmierung ist ja nicht so problematisch, aber die ganzen Programmierkonzepte wie MVC und Dependency-Injection und die 100 Klassen, die inzwischen alle mindestens 1 mal umbenannt sind, machen einem das Leben wirklich nicht einfacher.

    Die deprecated-Meldungen kommen aus PHPStorm - da steht leider gar nichts dazu, wie eine veraltete Funktion ersetzt werden soll - das kann man sich dann selbst ergoogeln.


    Danke für das Plugin, das kannte ich noch nicht. Alleine, bis ich xdebug mit PHPstorm am Laufen hatte, sind schon einige Stunden ins Land gegangen.


    Was machst Du alles als Dienstleister? Sonst komme ich gerne mal auf Dich zurück. Ich habe einfach schon zu viel Zeit in das Projekt versenkt.

  • kämpfe mal wieder damit, dass es gefühlt keine vernünftige Dokumentation zu Joomla 4 gibt

    Ich stehe als Komponentenentwickler der JoomGallery vor der gleichen Herausforderung.

    Ich habe, die mir bekannten Joomla 4 Dokus hier zusammengetragen:

    GitHub - JoomGalleryfriends/JG4-dev: Development repository for JoomGallery v4.x
    Development repository for JoomGallery v4.x. Contribute to JoomGalleryfriends/JG4-dev development by creating an account on GitHub.
    github.com


    Gibt es irgendwo eine Auflistung, wo man nachsehen kann, welche Funktionalitäten deprecated sind und was man ersatzeshalber verwenden kann?

    Auf Bases von bembelimen PR in J4.3 habe ich diese Liste von "veralteten" Klassenaufrufen gestartet. Die Liste dient mir persönlich als Spick. Keine Garatie auf Richtigkeit/Vollständigkeit.

    JoomGallery::friends ist aktuell noch auf der Suche nach Helfern für die JoomGallery 4 Entwicklung!

    Gesucht sind Leute für die PHP-Entwicklung, zum Testen, Übersetzen und Dokumentieren.

    Bei Interesse melde dich per PM oder Mail bei mir (Elfangor93).

  • Es ist noch nicht perfekt, aber ich habe mal alle Deprecated Methoden durchkommentiert. Kommt mit Joomla 4.3. klick

    Sehr cool! Vielen Dank, das hilft!


    Noch besser! Ich kämpfe mich da mal durch.

    Einmal editiert, zuletzt von Indigo66 () aus folgendem Grund: Ein Beitrag von Holgitsch mit diesem Beitrag zusammengefügt.

  • Ich glaube, das Thema hatte Re:Later vor kurzem schon mal angesprochen: Wenn Dokumentationen nur in Englisch akzeptiert werden, wird man aus Deutschland auch nur wenig Mithilfe bei der Erstellung der Doku bekommen. Aber vielleicht löst DeepL das Problem ja...

    ja, hier:


    Liebe Grüße

    Christine