Beispiel: Ich habe Mitglieder (die sich anmelden und ihre Daten aktualisieren können), die eine oder mehrere Qualifikationen haben. Also habe ich ein DataObject 'Members' und ein DataObject 'Qualification' mit einer has_one/has_many-Beziehung.Silverstripe 3.2: Wie fügt man Datenobjekten in einer Frontend-Form dynamisch hinzu?
Etwas wie folgt aus:
class Qualification extends DataObject {
private static $db = array (
'Title' => 'Text',
'From' => 'Date',
'Till' => 'Date'
);
private static $has_one = array (
'Member' => 'Member',
);
...
class Member extends DataObject {
...
private static $has_many = array (
'Qualifications' => 'Qualification',
);
...
Jetzt möchte ich ein Formular im Frontend bauen, die das Mitglied auf einmal viele Qualifikationen hinzufügen können und auch bestehende Qualifikationen aktualisieren in der gleichen Form.
es so
Qualifikation One
Titel aussehen könnte: xxx (Textfeld) Von: xxx (Datefield) Bis: xxx (Datefield)
Qualifikation Zwei
Titel: xxx (Textfeld) Von: xxx (Datumsfeld) Bis: xxx (datefield)
+ hinzufügen Qualifikationen
Was ist der beste Weg, das zu tun?
kann ich jQuery verwenden, um Felder wie folgt dynamisch hinzuzufügen: http://jsfiddle.net/nzYAW/
Aber wie kann ich mit ihnen umgehen zu der Datenbank zu aktualisieren und hinzuzufügen. Alles, was ich ausprobierte, war wirklich kompliziert und unordentlich, also denke ich, dass jemand anderes eine Idee hat, die ich gerade nicht sehe. Jede Hilfe wäre willkommen!
Ich habe das vorher noch nie gemacht, aber ich würde versuchen, ein 'GridField' am Frontend mit dem [GridField extensions module] zu verwenden (https://github.com/silverstripe-australia/silverstripe-gridfielddextensions) 'GridFieldEditableColumns' und' GridFieldAddNewInlineButton' Komponenten. – 3dgoo
@iraia Sie brauchen nur eine Aktion, die den Beitrag liest und den Namen des Eingabe-Attributs in ein Format ändert, das als Array gelesen werden kann: http://StackOverflow.com/Questions/2433727/Submitting-A-Multidimensional-Array-Via -post-mit-php. Dann speichern Sie einfach die "Keys" -Daten im Datenobjekt. Natürlich könnten Sie ein verstecktes Feld haben, das die Anzahl der Eingaben, die Sie haben, übergibt und dann verketten und ein Feld bekommen, aber auf diese Weise können Sie einfach die übertragenen Daten einfach iterieren. –
Danke Jungs. Ich werde beide Möglichkeiten ausprobieren und hier meine Ergebnisse melden. :) – iraira