Ich baue eine benutzerdefinierte Komponente und alles ist gut. Ich dachte, ich würde die neue Funktion für wiederholbare XML-Formularfelder 3.2 ausprobieren. Obwohl es funktioniert, weiß ich nicht genau, wie ich die Daten speichern soll.
Es ermöglicht mir, ein Modal zu starten und innerhalb dieses Modals bis zu 999 benutzerdefinierte Felder zu erstellen, die ich spezifiziere. Aber die grüne Schaltfläche zum Speichern im Modal schließt das Modal und wendet das Speichern nicht an?
Vermisse ich etwas
- -
<field name="list_templates"
type="Repeatable"
icon="list"
description="Main description"
label="Main Label"
default="">
<fields name="params">
<fieldset hidden="true" name="list_templates_modal" repeat="true">
<field name="template"
label="Template Label"
size="30"
type="text" />
<field name="location"
label="Location Label"
description="desc"
size="30"
type="filelist"
directory="media/editors/tinymce/templates"
exclude="index.html"
hide_default="true"
hide_none="true" />
<field name="description"
label="Description Label"
size="30"
type="textarea" />
</fieldset>
</fields>
Prost im Voraus
Jonny
component
joomla-3.2
Jonnypixel
quelle
quelle
Antworten:
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:
dazu
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
und dann eine Varibale für die Ansicht wie folgt einstellen
und dann nach Zeile 341
Ich habe das hinzugefügt
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.
- -
quelle