Ich habe ein kompliziertes Webformular mit mehreren hundert Einsendungen geerbt. Eine der Komponenten war ein Textfeld, mit dem die E-Mail-Adresse des Formularübermittlers erfasst wurde. Aus irgendeinem Grund ist dies ein Textfeld und kein E-Mail-Feld, das mich daran hindert, die E-Mail-Adresse zum Senden einer Bestätigungs-E-Mail zu verwenden.
Wenn ich die Textfeld-E-Mail-Komponente löschen würde, was würde mit allen Daten passieren? Ich gehe davon aus, dass es gelöscht wird.
Gibt es eine Möglichkeit, den Typ einer Formularkomponente zu ändern, während die Daten erhalten bleiben?
Update: Ich verwende Drupal 7 und Webform 3.19
Antworten:
Wenn eine Webform-Komponente gelöscht wird, werden die übermittelten Daten für diese Komponente gelöscht. Die Daten für die anderen Komponenten des Formulars bleiben erhalten. Ich habe dies bestätigt, indem ich die MySQL-Tabelle webform_submitted_data in Webform 7.x-3.23 abgefragt habe.
Wie der Benutzer calebtr angegeben hat, gibt es für jede Komponente ein Kontrollkästchen "Privat", das als Ersatzfunktion zum Löschen, aber Speichern der Daten verwendet werden kann, mit der Ausnahme, dass angemeldete Benutzer mit der Berechtigung zum Lesen der Ergebnisse die Komponente weiterhin sehen das Formular (nicht nur in den Ergebnissen). Diese Felder können mithilfe eines Stylesheets oder einer benutzerdefinierten Vorlage ausgeblendet werden, möglicherweise nachdem sie in einem privaten Feldsatz zusammengefasst wurden.
Die Webform-Benutzeroberfläche ermöglicht keine Änderung des Komponententyps. Ich sehe diese Informationen in webform_component.fieldset gespeichert, sodass Sie sie dort wahrscheinlich ändern können. Sie möchten auch die Komponenteneinstellungen in der Spalte "extra" aktualisieren.
quelle
Überlegen Sie, ob die Datenstruktur wirklich intakt sein muss oder nicht oder ob nur die Daten erhalten bleiben sollen. Verwenden Sie die Webformulardaten in einer Ansicht? Ist jemand von der automatisierten "Analyse" abhängig, die Webform bereitstellt?
Wenn Sie nur Bestätigungs-E-Mails für neue Einreichungen senden müssen, fügen Sie das neue Feld mit derselben Beschriftung, einem anderen Schlüssel und dem richtigen Typ hinzu und unterdrücken Sie das ursprüngliche Feld, indem Sie es in den Feldeinstellungen als "Privat" markieren.
Private Felder werden Benutzern angezeigt, die Zugriff auf Ergebnisse haben, sodass dies für Ihren Anwendungsfall möglicherweise nicht funktioniert.
Verwenden Sie alternativ das Node Clone- Modul, um das Webformular zu klonen und dieses Feld zu ändern, ohne Daten zu verlieren oder alles neu eingeben zu müssen.
quelle
Wenn das von Ihnen gelöschte Feld für einen Inhaltstyp eindeutig ist, wird das Feld aus der Datenbank entfernt (einschließlich der Daten). Wenn Sie ein freigegebenes Feld aus löschen, wird das Feld zusammen mit den für den Inhaltstyp eindeutigen Daten aus diesem Inhaltstyp entfernt.
Wenn Sie feststellen, dass Sie die mit dem Feld verknüpften Daten beibehalten müssen, aber einen anderen Feldtyp für die Daten benötigen, müssen Sie vorausplanen.
Eine gute Lösung könnte darin bestehen, das Feeds-Modul (zum Importieren in Felder) und das Views Data Export-Modul (zum Exportieren von Feldern in die Tabelle) zu verwenden. Das Verfahren wäre:
Richten Sie eine Ansicht ein, in der alle Ihre Textfeldwerte aufgelistet sind und alle Felder angezeigt werden, die Sie migrieren möchten. Dann Daten exportieren und CSV-Format wählen.
Verwenden Sie Feeds, um die Daten in D7 zu importieren. Ordnen Sie einfach jedes exportierte Feld Ihrem bevorzugten Feld zu.
auf der anderen Seite können Sie diese lesen Tutorial zu
quelle