Sie haben Recht, müssen aber nicht nach unten gehen JTable, wenn Sie dem Joomla-Weg folgen und JControllerFormals Grundlage für Ihren Ansichts-Controller verwenden, z
class MycomponentControllerMycontent extends JControllerForm {}
und auf JModelAdminder Grundlage Ihrer Komponenten Modell z
class MycomponentModelMycontent extends JModelAdmin {}
Durch Erweitern erhalten JControllerFormSie eine integrierte edit()Methode, mit der Sie Ihr Modell und Ihre Tabelle für Sie einrichten und den Zugriff auf den betreffenden Datensatz sowie die Unterstützung von Checkouts durch die Tabelle überprüfen können (indem überprüft wird, ob eine Spalte checked_outvorhanden ist). Wenn dies der Fall ist, wird versucht, checkout()die Aufzeichnung über das Modell durchzuführen.
Durch die Erweiterung JModelAdmin erben Sie es getItem(), checkIn()und checkOut()Methoden. Wie bereits erwähnt, ruft das Modell auf checkout()(von dem es erbtJModelForm ) und stellt sicher, dass in checked_outIhrer Tabelle neben der Spalte auch eine aufgerufen wird checked_out_time.
Zu diesem Zeitpunkt passiert eines von zwei Dingen, wenn eine dieser Spalten nicht vorhanden ist, JModelFormfälscht sie und kehrt zurück true(zeigt an, dass die Arbeit erledigt ist). Andernfalls werden die aktuellen Benutzer erfasst und anschließend versucht, zunächst zu überprüfen, ob sie bereits für einen anderen Benutzer ausgecheckt wurden. Zu diesem Zeitpunkt wird endlich die JTableImplementierung von checkOut()aufgerufen (wenn Sie sie nicht mit Ihrer eigenen Tabellendefinition überschrieben haben, die in J3 normalerweise nicht erforderlich ist).
JTableführt genau die gleichen Spaltenprüfungen durch, und wenn alles in Ordnung ist (dh eine gültige ID hat), werden die Spalten checked_outund checked_out_timeder zu bearbeitende Datensatz aktualisiert .
Als Randnotiz: Wenn edit()ein Element getItem()aufgerufen wird, wird der Datensatz über a geladenJTable (dh es wird ein getTable()gefolgt von ausgeführt) load($pk). (An diesem Punkt werden JTableauch Ihre Ereignisse onBeforeLoad und onAfterLoad für Plugins ausgelöst, was sehr hilfreich ist.)
Der Datensatz wird an Ihre Version von zurückgegeben JModelAdmin, die ihn in ein Basisobjekt konvertiert stdClass(es war früher ein JObjectfrüheres Objekt ). Wenn der Datensatz (jetzt Objekt) eine paramsSpalte / ein Attribut enthält, konvertiert er diese für einen JRegistryeinfachen Zugriff in ein Objekt.
Auf Joomla-Weise erhalten Sie viele kostenlose Dinge kostenlos. :) :)