it-swarm.com.de

Fehler "Schwerwiegender Fehler: Aufruf einer Member-Funktion getKeyName () für ein Nicht-Objekt", aber ohne Tabelle?

Ich schreibe eine kleine Komponente zum Exportieren von Daten aus einer Shop-Komponente, dies ist meine erste Komponente, ich erhalte die Fehlermeldung "Schwerwiegender Fehler: Aufruf einer Member-Funktion getKeyName () auf einer Nicht-Objekt-PATH\legacy\model\admin.php an Zeile 885 ", fand ich eine Lösung, aber mein Problem ist, dass ich keine neue Tabelle werde, und meine Frage ist, wie ich eine neue SQL-Tabelle vermeiden kann. Weil ich mit Tabellen bereits vorhandener Komponenten arbeite und sie nicht mit meiner Komponente bearbeitet werden.

Meine Quellen:

http://forum.joomla.org/viewtopic.php?f=620&t=666986
http://stackoverflow.com/questions/21156707/fatal-error-call-to-a-member-function-getkeyname
http://stackoverflow.com/questions/12313272/error-call-to-a-member-function-getkeyname-component-for-joomla-2-5

Ich verstehe aus dieser Lösung, dass ich einen neuen Tisch brauche, aber ich brauche es nicht ...

1
jExchange

JForm wird in der Regel den Spalten einer Datenbanktabelle zugeordnet, wenn JModelAdmin verwendet wird. Wenn der Name einer Spalte also add lautet, wird nach add gesucht, um eine Spalte in dieser Tabelle zu sein .

Wenn Sie in die Inhaltskomponente (Artikel) schauen und einige der Formularfelder untersuchen, sehen Sie in der Datenbanktabelle nach, ob der Inhalt übereinstimmt. Wenn Sie JForm verwenden möchten, wenden Sie am besten Ihre eigene Logik darauf an. Verwenden Sie also JModelLegacy mit einem Controller, um die Funktion Ihres eigenen Modells abzufangen und direkt zu speichern, und nicht die Standardfunktion.

Für so ziemlich jede Funktion in JModelAdmin wird $table = $this->getTable(); hinzugefügt, um die Daten aus der Tabelle übergeben oder abrufen zu können. Allerdings gibt es mit JModelLegacy keine direkte Verbindung zu JForm, aber bei den Klängen möchten Sie nur die übersichtliche Darstellung der Formulare, weshalb es wahrscheinlich am besten ist, diese Logik einfach zu Ihrer Ansicht hinzuzufügen Klasse sowieso (die view.html.php)

Sie könnten jedoch die Funktionen zum Speichern/Abrufen von JModelAdmin überschreiben, um sie zu nutzen, aber insgesamt könnte es meiner Meinung nach mehr Arbeit sein, als nur JModelLegacy zu verwenden. Es erzwingt weniger Druck auf Sie und gibt Ihnen die Möglichkeit, Ihren Code stärker anzupassen, wenn Sie nicht die typische Joomla-Methode zur Verwendung von Tabellen verwenden.

4
Jordan Ramstad