Eigene Komponente: Anzeige von relationaler Tabelle in Edit-View

  • Hallo zusammen.


    Ich bin derzeit beim Erstellen einer eigenen Joomla!-Komponente. Die Komponente teste ich unter Joomla! 3.4.8. Bisher widme ich mich ausschließlich den Backend-Views.


    Das Problem betrifft im Wesentlichen 3 Datenbank-Tabellen, die, wie im abgebildeten Datenbank-Modell dargestellt, vorhanden sind.



    Zurzeit gibt es in der Komponente eine Members-View, die eine Liste aller erstellten Mitglieder anzeigt. Entsprechend hierzu die Member-View, die das Formular zum Anlegen eines Mitglieds anzeigt.
    Des Weiteren gibt es eine Tests-View, die eine Liste aller angelegten Prüfungen, sowie eine Test-View, die das Formular zum Anlegen anzeigen.


    Nun möchte ich Folgendes erreichen:
    Es soll möglich sein, in der Member-View einen Tab auszuwählen, um alle bisherigen Prüfungen des jeweiligen Mitglieds anzuzeigen.
    Dazu habe ich mich ganz generell an der com_contact Komponente orientiert.


    Die Darstellung der Tabelle des Tabs habe in die Datei edit_tests.php ausgelagert und in edit.php eingebunden. Die Daten werden durch eine Methode im [com_name]Helper von der Datenbank abgerufen, die mit der getItem($pk) Methode im Member-Model aufgerufen wird.


    Es wird die Tabelle auch mit den entsprechenden Einträgen angezeigt. Das Problem dabei ist nur, dass ich keine neuen Mitglieder mehr speichern kann. Das Member-edit Formular wird ganz normal angezeigt, ich kann auch die Felder ausfüllen, sobald ich jedoch auf Save bzw. Save & Close drücke, wird die Members-View (Liste) angezeigt ohne, dass das neue Mitglied gespeichert worden ist.


    Wenn ich die entsprechende Passage (siehe unten) aus der edit.php wieder lösche, funktioniert alles wie davor (nur die Tabelle mit den abgelegten Prüfungen wird dementsprechend nicht mehr angezeigt).


    Ganz generell habe ich nun 2 Fragen:

    • Ist mein Vorgehen mit dem Laden der Daten via [com_name]Helper und anschließend über getItem im Member-Model korrekt? Gibt es bessere Wege?
    • Woran könnte es liegen, dass ich nach dem Einbinden keine Mitglieder mehr einfügen kann?


    Vielen Dank für Eure Hilfe!


    Bisher sehen die Dateien wie folgt aus (Auszüge):


    [com_name]/admin/views/member/tmpl/edit.php


    admin/views/member/tmpl/edit_tests.php


    [com_name]/admin/models/member.php


    [com_name]/admin/helpers/[com_name].php

    • Hilfreich

    edit_tests.php

    <input type="hidden" name="task" value="" />
    <input type="hidden" name="boxchecked" value="0" />


    Wenn ich dich richtig verstehe, sind die Tests ja nur Info. Dann sollte dieses tmpl keine Formulare bzw. Formularfelder (task) enthalten, die ggf. dem "echten Formular" in die Quere kommen.
    Das schon geprüft?


    Oder anders: Das Speicherformular sollte beendet sein (</form>) bevor das Tests-Formular geöffnet wird (Brauchst du dort überhaupt eins?). Beide form müssen unterschiedliche IDs (oder warens Classes(?), ich sag mal "Marker", haben, da der Speichernbutton von außerhalb per JavaScript "auf den task-Input des Formulars schießt".
    Hast du 2 form muss unterschieden werden, für welches welcher Button zuständig ist.

  • Vielen Dank für den Hinweis. Der Tab mit den Prüfungen befand sich innerhalb der Form, weshalb das Speichern nicht ging.


    Um die Prüfungen jedoch als Tab anzeigen zu lassen, muss edit_tests.php innerhalb der <form>...</form> geladen werden, oder?
    Deshalb werde ich dann vermutlich eine zweite form brauchen, die dann mit einem anderen Attribut (ich glaube ID) dementsprechend gekennzeichnet wird.


    Ich werde das Ganze mal (hoffentlich) morgen ausprobieren und mich dann hier noch einmal melden, ob und wie es geklappt hat.


    Bis hierhin jedoch schon mal vielen Dank @Re:Later!

  • Zitat

    innerhalb der <form>...</form> geladen werden, oder?


    Nein, warum denn? Außer du speicherst auch Daten aus diesem Tab.


    Das Tab-System ist vollkommen unabhängig. Kannst auch Tabs vor und nach <form> </form> einsetzen, bzw. loadTemplate irgendwo.


    Wie gesagt theoretisch auch mehrere speicherbare form. Oder die Prüfungen sortierbar. Die Buttons etc. müssen das nur wissen und man muss einiges programmieren, um dann Konflikte auszuschließen, wenns um speichern geht.

  • Vielen Dank nochmals.


    Nach längerem Probieren habe ich es leider nicht hinbekommen, dass die Prüfungen innerhalb desselben Tab-Sets wie die form angezeigt wird. Ich habe das Problem nun so gelöst, dass es ein "Main"-Tabset mit den Tabs "Form" und "Tests" gibt. Der Form-Tab enthält in sich wieder ein Tabset mit den "normalen" Tabs zum bearbeiten eines Mitglieds.


    Ich werde mich nun daran setzen, die Tests-Tabelle sortieren und filtern zu können.