Ok, hier ist die Antwort auf meine eigene Frage und ein paar Beobachtungen und Korrekturen.
Erstens habe ich bei der Verwendung des Beispielcodeblocks in meiner benutzerdefinierten XML-Komponentendatei versäumt, den Feldnamen in meine benutzerdefinierte Datenbanktabelle einzufügen.
Also zum Beispiel: list_templates aus dem XML-Beispiel
Muss wie folgt in die MYSQL-Datenbank in meiner Komponententabelle gehen:
Spaltenname: list_templates Spaltentyp: TEXT
Grundsätzlich, weil seine JSON-Daten und es am besten in eine Spalte vom Typ TEXT passen.
Nächster...
Es gab den Fehler, dass beim Schließen des Modals und beim erneuten Öffnen der hinzugefügte Inhalt dupliziert wurde.
Um dies zu beheben, habe ich die Datei repeatable.js in media / system / js gefunden und eine Sicherungskopie davon erstellt. Ich habe dann die unkomprimierte Version in wiederholbare js eingefügt und festgestellt, dass durch Ändern dieser Zeile:
30 // Set original content for cancel
31 origContent = getTrs().clone();
dazu
30 // Set original content for cancel
31 origContent = getTrs();
Dass es tatsächlich den Duplizierungsfehler behebt. Ich habe mehrere Tests durchgeführt, um zu sehen, ob es das Richtige tut und es tatsächlich ist. Es tritt kein Datenverlust auf und es werden keine Daten mehr dupliziert. Sie können die Modalbox so oft öffnen und schließen, wie Sie möchten, und es werden immer nur die von Ihnen gespeicherten Auswahlen angezeigt.
Ich habe dies versucht, indem ich die Ansichtsdatei geschlossen und die Daten sowie mehrere andere Methoden wieder geöffnet habe, die alle funktionieren.
Und zuletzt!
Da ich den Inhalt des JSON in meiner Ansicht als Tabelle unter der Auswahlschaltfläche wiedergeben wollte, habe ich repetable / js einige Dinge hinzugefügt, damit ich nach dem Klicken auf die Schaltfläche Speichern im Modal speichern und anwenden kann.
Dies bedeutet, dass beim Klicken auf Speichern in den wiederholbaren Feldern modal die Seite gespeichert und angewendet wird, sodass ich die Daten direkt aus dem Tabellenspaltenfeld sammeln kann, um sie auf der Seite anzuzeigen.
Ich habe dies erreicht, indem ich die folgenden Dinge hinzugefügt habe.
Eine Funktion zum Abrufen der Ansicht view = componentnameview aus der URL
// get the url values function
function getUrlVars() {
var vars = {};
var parts = window.location.href.replace(/[?&]+([^=&]+)=([^&]*)/gi,
function(m,key,value) {
vars[key] = value;
});
return vars;
}
und dann eine Varibale für die Ansicht wie folgt einstellen
var componentName = getUrlVars()["view"];
und dann nach Zeile 341
Ich habe das hinzugefügt
Joomla.submitbutton(''+componentName+'.apply');
Jetzt macht die modale Schaltfläche Speichern ihre Sache und dann speichert Joomla das Element und weiß, in welcher Komponentenansicht es gespeichert wird und bleibt auf der Seite. Auf diese Weise kann ich die Tabellendaten erfassen, aber auch den Inhalt in den wiederholbaren Feldern modal speichern, falls der Benutzer glaubt, sie gespeichert zu haben, und versehentlich auf die Standardschaltflächengruppe des Elements klicken.
Ich hoffe, ich kann jemandem mit meiner Antwort / Post helfen. Wenn es nicht angebracht ist, all dies einzubringen, lass es mich wissen und ich werde es woanders hin verschieben.
- -