Przechowuj formularze internetowe Drupal 7 w kodzie


8

Zastanawiam się, czy istnieje jakieś rozwiązanie do przechowywania formularzy internetowych w kodzie. Abyś mógł łatwo kopiować je na innych stronach i łączyć je z własnymi modułami. Patrzę na coś podobnego jako interfejs API widoków.

Jeśli nie jest dostępne, ile osób jest zainteresowanych taką funkcjonalnością? Mogę opracować moduł, który mógłby obsługiwać przechowywanie formularzy internetowych w Code. Czy masz jakieś obawy związane z tworzeniem takiego modułu?

Dzięki, Jaap


Masz na myśli formularze utworzone za pomocą modułu Webform?
— Mołot

1
Tak, mam na myśli formularze utworzone za pomocą modułu internetowego
— Jaap Jansma,

1
To naprawdę bardzo proste, wystarczy spojrzeć na to, jak robi to udział Webform . ( webform_share_export()i webform_share_node_insert()są funkcjami pieniężnymi). Nie mogę powiedzieć, że akceptuję użycie eval(), ale można równie łatwo przekonwertować to na użycie obiektu JSON / serializowanego ciągu. Jedyną (małą) trudnością, którą musisz pokonać, jest to, w jaki sposób / kiedy twój formularz internetowy jest stosowany do nowego węzła, przy czym węzeł jest oczywiście wymagany do dołączenia formularza internetowego.
— Clive

Odpowiedzi:


1

Niezupełnie i nie ma takiej potrzeby

  1. Jeśli potrzebujesz formularza dostępnego z kodu, formularze Form API nie są trudne do napisania od zera. W przeciwieństwie do widoków, można tylko tworzyć motywy formularzy internetowych w ich identyfikatorach węzłów, a to zmieniałoby się z witryny na witrynę, więc formularze WWW połączone z modułem nie będą wygodne.

  2. Jeśli chcesz połączyć formularze ze swoimi modułami i z jakiegokolwiek powodu nie możesz użyć Form API, integracja funkcji UUID i udział w formularzu internetowym zapewniają sposoby na to. Nie będzie to kod w czystym znaczeniu, ale powinien działać.

  3. Jest stosunkowo łatwy w użyciu, hook_form_alteraby uzyskać reprezentację formularza API dla konkretnego formularza internetowego. Oczywiście nie będziesz w stanie łatwo tego zmienić w przyszłości, ale znowu, wbrew poglądom, jest dobrze. Moduł nie ucierpi, jeśli niektóre dane nie zostaną wyświetlone. Dane, które nie zostały dostarczone lub zostały dostarczone w sposób, którego moduł się nie spodziewa, mogą spowodować uszkodzenie. Więc jeśli moduł potrzebuje formy, to nie powinno być łatwe do edycji . Edycja formularza wymagałaby i tak edycji kodu modułu, więc kod Form API ułatwia, a nie utrudnia na dłuższą metę, w takich sytuacjach.


1
Chociaż jest to dobra odpowiedź na alternatywę, myślę, że chęć zachowania formularzy internetowych w kodzie jest dość rozsądnym żądaniem (nie zgadzam się, że nie jest to potrzebne lub że to naprawdę niemożliwe). Na przykład, jeśli chcesz dostarczyć podstawowy formularz kontaktowy z modułem, który użytkownicy mogą następnie rozszerzyć za pomocą interfejsu użytkownika, formularz internetowy byłby idealny. Samo zbudowanie tego interfejsu byłoby prawdziwym bólem. Ponieważ webformobiekt (lub tablica?) I tak znajduje się na obiekcie węzłowym, można go łatwo serializować i ponownie zastosować
— Clive

@Clive Ale dla podstawowego kontaktu, dlaczego ktokolwiek miałby wymagać prawdziwego kodu? Dlaczego eksportowany węzeł (z UUID Features Integration możesz eksportować węzeł do modułu) nie wystarczy?
— Mołot

Czy ten moduł również synchronizuje obiekt Webform?
— Clive

@Clive O ile pamiętam, z pewnymi problemami, ale tak. Aha, a jeśli niestandardowy kod potrzebuje danych z formularza, czy uczynienie go formularzem internetowym nie byłoby niebezpieczne? Nie znam sposobu uczynienia pól odpornymi na usuwanie w formularzu internetowym (ale przyznaję, że nie wyglądałem tak mocno).
— Mołot

1
Rzeczywiście, istnieje nawet łatka do formularza internetowego, aby integracja działała. Cofam to :)
— Clive
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.