Зберігайте веб-форми Drupal 7 у коді


8

Мені цікаво, чи є рішення для зберігання веб-форм у коді. Так що ви можете легко копіювати їх на інших сайтах і поєднувати їх з власними модулями. Я переглядаю щось подібне як API перегляду.

Якщо її немає, скільки людей цікавить така функціональність? Я міг би розробити модуль, який би міг обробляти зберігання веб-форм у коді. А у вас є проблеми при створенні такого модуля?

Спасибі, Яап


Ви маєте на увазі форми, створені за допомогою модуля Webform?
Молот

1
Так, я маю на увазі форми, створені за допомогою модуля веб-форми
Jaap Jansma

1
Насправді це дуже просто, просто подивіться, як це робить поділка Webform . ( webform_share_export()і webform_share_node_insert()це функції грошей). Не можу сказати, що я схвалюю використання eval(), але ви можете так само легко перетворити його, щоб використовувати натомість об'єкт JSON / серіалізовану рядок. Єдина (невелика) складність, яку вам потрібно подолати, - це те, як / коли ваша веб-форма застосовується до нового вузла, звичайно, для приєднання веб-форми потрібен вузол.
Клайв

Відповіді:


1

Не дуже, і в цьому немає потреби

  1. Якщо вам потрібна форма, доступна з коду, форми API форм не так важко написати з нуля. Всупереч переглядам, ви можете лише тематизувати Webforms, щоб їх ідентифікатор вузла, і це змінилося б від сайту до сайту, тому форми веб-форм, що входять у модуль, не будуть зручними.

  2. Якщо ви хочете поєднати форми з модулями, і з будь-якої причини ви не можете використовувати API API, інтеграція функцій UUID та обмін веб- формою надають способи це зробити. Це не буде кодом у чистому сенсі, але він повинен працювати.

  3. Це відносно просто для використання hook_form_alterдля представлення API форми певної веб-форми. Звичайно, ви не зможете це легко змінити в майбутньому, але знову ж таки, всупереч думкам, це добре. Модуль не зашкодить, якщо деякі дані не відображаються. Дані, не надані або надані таким чином, що модуль не очікує, можуть порушити ситуацію. Отже, якщо модулю потрібна форма, редагувати його не повинно бути просто . Внесення змін до форми все-таки вимагатиме редагування коду модуля, тому код API Form полегшує ситуацію в довгостроковій перспективі, а не складніше.


1
Хоча це є гарною відповіддю на альтернативу, я думаю, що бажати зберегти веб-форми в коді - це досить розумний запит (я не згоден, що в цьому немає необхідності, або що це насправді неможливо). Наприклад, якщо ви хочете надати базову контактну форму з модулем, який потім можна розширити користувачами через інтерфейс користувача, ідеально підійде веб-форма. Будівництво цього інтерфейсу було б справжнім болем. Оскільки webformоб’єкт (чи масив?) Так чи інакше сидить на об’єкті вузла, його можна серіалізувати та повторно застосувати дуже легко
Clive

@Clive Але для базового контакту, навіщо комусь потрібен реальний код? Чому б експортований вузол (за допомогою інтеграції функцій UUID ви можете експортувати вузол до модуля) недостатньо?
Молот

Чи синхронізує цей модуль також об’єкт Webform?
Клайв

@Clive Наскільки я пам'ятаю це було, з деякими питаннями, але так. О, і якщо користувацькому коду потрібні дані з форми, чи не зробить це веб-формою небезпечною? Я не знаю жодного способу зробити поля стійкими до видалення у веб-формі (але, зізнаюся, я не виглядав так складно).
Молот

1
Дійсно, є навіть виправлення веб-форми, щоб інтеграція працювала. Я беру його назад :)
Клайв
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.