web-dev-qa-db-ja.com

コンポーネントが削除されるとWebformデータはどうなりますか?コンポーネントタイプを変更できますか?

私は数百の提出物がある複雑なWebフォームを継承しました。コンポーネントの1つは、フォーム送信者の電子メールアドレスを取得するために使用されるテキストフィールドです。なんらかの理由で、これはテキストフィールドであり、電子メールフィールドではないため、電子メールアドレスを使用して確認メールを送信できません。

テキストフィールドの電子メールコンポーネントを削除すると、すべてのデータはどうなりますか?消されると思います。

データを保持したままフォームコンポーネントのタイプを変更する方法はありますか?

更新:Drupal 7とWebform 3.19を使用しています

9
Kevin Morse

Webformコンポーネントが削除されると、そのコンポーネントに対して送信されたデータが削除されます。フォームの他のコンポーネントのデータは保持されます。 Webform 7.x-3.23のwebform_submitted_data MySQLテーブルにクエリを実行して、これらを確認しました。

ユーザーcalebtrが示したように、各コンポーネントには「プライベート」チェックボックスがあり、ersatzのdelete-but-save-the-data機能として使用できます。ただし、結果を読み取る権限を持つログインユーザーには、コンポーネントが表示されます。フォーム(結果だけでなく)。これらのフィールドは、スタイルシートまたはカスタムテンプレートを使用して、場合によってはプライベートフィールドセットにまとめた後に非表示にすることができます。

Webform UIはコンポーネントタイプの変更を許可しません。この情報はwebform_component.fieldsetに格納されているので、おそらくそこで変更できます。 「追加」列のコンポーネント設定も更新する必要があります。

3

本当にデータ構造をそのままにしておく必要があるのか​​、それともデータを保存しておく必要があるのか​​を検討してください。ビューでWebフォームデータを使用していますか? Webformが提供する自動化された「分析」に依存している人はいますか?

新しい送信の確認メールのみを送信する必要がある場合は、同じラベル、異なるキー、正しいタイプの新しいフィールドを追加し、フィールド設定で「非公開」としてマークして、元のフィールドを非表示にします。

プライベートフィールドは結果にアクセスできるユーザーに表示されるため、これはユースケースでは機能しない場合があります。

または、 Node Clone モジュールを使用して、Webフォームを複製し、データを失うことなく、またはすべてのキーを再入力する必要なく、そのフィールドを変更します。

2
calebtr

削除するフィールドがコンテンツタイプに固有のものである場合、そのフィールドは(データを含む)データベースから削除されます。から共有フィールドを削除すると、そのフィールドはコンテンツタイプに固有のデータとともにそのコンテンツタイプから削除されます。

フィールドに関連付けられたデータを保持する必要があるが、データに別のタイプのフィールドが必要な場合は、事前に計画する必要があります。

  • 新しいフィールドを作成します。
  • 古いフィールドから新しいフィールドにデータを移行する方法を考案します。
  • 古いフィールドを削除します。

良い解決策は、フィードモジュール(フィールドにインポートする)とビューデータエクスポートモジュール(フィールドをスプレッドシートにエクスポートする)を使用することです。手順は次のとおりです。

すべてのテキストフィールド値を一覧表示し、移行するすべてのフィールドを表示するビューを設定します。次に、データをエクスポートし、CSV形式を選択します。

フィードを使用して、データをD7にインポートします。エクスポートされた各フィールドを適切なフィールドにマッピングするだけです。

一方、これを読みたいと思うかもしれません tutorial

0
Sohail