Sie haben Recht, müssen aber nicht nach unten gehen JTable
, wenn Sie dem Joomla-Weg folgen und JControllerForm
als Grundlage für Ihren Ansichts-Controller verwenden, z
class MycomponentControllerMycontent extends JControllerForm {}
und auf JModelAdmin
der Grundlage Ihrer Komponenten Modell z
class MycomponentModelMycontent extends JModelAdmin {}
Durch Erweitern erhalten JControllerForm
Sie 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_out
vorhanden 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_out
Ihrer 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, JModelForm
fä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 JTable
Implementierung von checkOut()
aufgerufen (wenn Sie sie nicht mit Ihrer eigenen Tabellendefinition überschrieben haben, die in J3 normalerweise nicht erforderlich ist).
JTable
führt genau die gleichen Spaltenprüfungen durch, und wenn alles in Ordnung ist (dh eine gültige ID hat), werden die Spalten checked_out
und checked_out_time
der 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 JTable
auch 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 JObject
früheres Objekt ). Wenn der Datensatz (jetzt Objekt) eine params
Spalte / ein Attribut enthält, konvertiert er diese für einen JRegistry
einfachen Zugriff in ein Objekt.
Auf Joomla-Weise erhalten Sie viele kostenlose Dinge kostenlos. :) :)
Sie haben Recht mit Ihren Annahmen. Sie müssen die Tabelle mit der zugehörigen Logik einrichten, um das zu erreichen, was Sie versuchen.
Während ich Joomla 3+ lerne, habe ich Component Creator verwendet , um eine extrem einfache Komponente mit einer einzigen Tabelle und nur der Joomla-Funktion zu erstellen , die ich lernen möchte . Der generierte Code ist sehr gut und ohne die Komplexität der üblichen installierten Komponenten leicht zu befolgen.
quelle