Odziedziczyłem skomplikowany formularz internetowy z kilkoma setkami zgłoszeń. Jednym ze składników było pole tekstowe służące do przechwytywania adresu e-mail osoby wysyłającej formularz. Z jakiegoś powodu jest to pole tekstowe, a nie pole e-mail, co uniemożliwia mi użycie adresu e-mail do wysłania wiadomości e-mail z potwierdzeniem.
Gdybym usunął komponent pola tekstowego, co stałoby się ze wszystkimi danymi? Zakładam, że to zostanie usunięte.
Czy istnieje sposób na zmianę typu składnika formularza przy jednoczesnym zachowaniu danych?
Aktualizacja: Używam Drupal 7 i Webform 3.19
Odpowiedzi:
Po usunięciu komponentu Webform przesłane dane dla tego komponentu są usuwane. Dane pozostałych składników formularza są zachowane. Potwierdziłem to, sprawdzając tabelę MySQL webform_submitted_data na Webform 7.x-3.23.
Jak wskazał użytkownik calebtr, dla każdego komponentu znajduje się pole wyboru „Prywatne”, które może być używane jako funkcja ersatz usuwania-ale-zapisywania-danych, z tym wyjątkiem, że zalogowani użytkownicy z uprawnieniem do odczytu wyników nadal będą widzieć komponent na formularz (nie tylko w wynikach). Te pola mogą być ukryte za pomocą arkusza stylów lub szablonu niestandardowego, potencjalnie po skorygowaniu ich w prywatny zestaw pól.
Interfejs sieciowy nie pozwala na zmianę typu komponentu. Widzę te informacje przechowywane w pliku webform_component.fieldset, więc prawdopodobnie możesz je tam zmodyfikować. Chcesz także zaktualizować ustawienia komponentu w kolumnie „dodatkowe”.
źródło
Zastanów się, czy naprawdę potrzebujesz nienaruszonej struktury danych, czy tylko potrzebujesz danych. Czy używasz danych formularza internetowego w widoku? Czy ktoś jest zależny od automatycznej „analizy” zapewnianej przez Webform?
Jeśli musisz tylko wysyłać wiadomości e-mail z potwierdzeniem nowych zgłoszeń, dodaj nowe pole z tą samą etykietą, innym kluczem i poprawnym typem, a następnie pomiń oryginalne pole, zaznaczając je jako „Prywatne” w ustawieniach pola.
Prywatne pola są wyświetlane użytkownikom, którzy mają dostęp do wyników, więc może to nie działać w twoim przypadku użycia.
Alternatywnie, użyj modułu Node Clone , aby sklonować formularz internetowy i zmienić to pole bez utraty danych lub konieczności ponownego wpisywania wszystkiego.
źródło
Jeśli pole, które usuwasz, jest unikalne dla typu zawartości, wówczas pole nie jest pobierane z bazy danych (która obejmuje jego dane). Jeśli usuniesz wspólne pole, pole zostanie usunięte z tego typu zawartości wraz z danymi unikalnymi dla tego typu zawartości.
Jeśli okaże się, że musisz zachować dane powiązane z polem, ale potrzebujesz innego rodzaju pola dla danych, musisz planować z wyprzedzeniem.
Dobrym rozwiązaniem może być użycie modułu Kanały (do importowania do pól) i modułu eksportu danych widoków (do eksportowania pól do arkusza kalkulacyjnego). Procedura byłaby:
Skonfiguruj widok, który zawiera listę wszystkich wartości pól tekstowych i wyświetla wszystkie pola, które chcesz migrować. Następnie eksport danych i wybierz format CSV.
Użyj kanałów, aby zaimportować dane do D7. Wystarczy zmapować każde wyeksportowane pole na preferowane pole.
Z drugiej strony warto przeczytać ten poradnik zbyt
źródło