私は数百の提出物がある複雑なWebフォームを継承しました。コンポーネントの1つは、フォーム送信者の電子メールアドレスを取得するために使用されるテキストフィールドです。なんらかの理由で、これはテキストフィールドであり、電子メールフィールドではないため、電子メールアドレスを使用して確認メールを送信できません。
テキストフィールドの電子メールコンポーネントを削除すると、すべてのデータはどうなりますか?消されると思います。
データを保持したままフォームコンポーネントのタイプを変更する方法はありますか?
更新:Drupal 7とWebform 3.19を使用しています
Webformコンポーネントが削除されると、そのコンポーネントに対して送信されたデータが削除されます。フォームの他のコンポーネントのデータは保持されます。 Webform 7.x-3.23のwebform_submitted_data MySQLテーブルにクエリを実行して、これらを確認しました。
ユーザーcalebtrが示したように、各コンポーネントには「プライベート」チェックボックスがあり、ersatzのdelete-but-save-the-data機能として使用できます。ただし、結果を読み取る権限を持つログインユーザーには、コンポーネントが表示されます。フォーム(結果だけでなく)。これらのフィールドは、スタイルシートまたはカスタムテンプレートを使用して、場合によってはプライベートフィールドセットにまとめた後に非表示にすることができます。
Webform UIはコンポーネントタイプの変更を許可しません。この情報はwebform_component.fieldsetに格納されているので、おそらくそこで変更できます。 「追加」列のコンポーネント設定も更新する必要があります。
本当にデータ構造をそのままにしておく必要があるのか、それともデータを保存しておく必要があるのかを検討してください。ビューでWebフォームデータを使用していますか? Webformが提供する自動化された「分析」に依存している人はいますか?
新しい送信の確認メールのみを送信する必要がある場合は、同じラベル、異なるキー、正しいタイプの新しいフィールドを追加し、フィールド設定で「非公開」としてマークして、元のフィールドを非表示にします。
プライベートフィールドは結果にアクセスできるユーザーに表示されるため、これはユースケースでは機能しない場合があります。
または、 Node Clone モジュールを使用して、Webフォームを複製し、データを失うことなく、またはすべてのキーを再入力する必要なく、そのフィールドを変更します。
削除するフィールドがコンテンツタイプに固有のものである場合、そのフィールドは(データを含む)データベースから削除されます。から共有フィールドを削除すると、そのフィールドはコンテンツタイプに固有のデータとともにそのコンテンツタイプから削除されます。
フィールドに関連付けられたデータを保持する必要があるが、データに別のタイプのフィールドが必要な場合は、事前に計画する必要があります。
良い解決策は、フィードモジュール(フィールドにインポートする)とビューデータエクスポートモジュール(フィールドをスプレッドシートにエクスポートする)を使用することです。手順は次のとおりです。
すべてのテキストフィールド値を一覧表示し、移行するすべてのフィールドを表示するビューを設定します。次に、データをエクスポートし、CSV形式を選択します。
フィードを使用して、データをD7にインポートします。エクスポートされた各フィールドを適切なフィールドにマッピングするだけです。
一方、これを読みたいと思うかもしれません tutorial も