Drupal формы изменить в веб-формах - PullRequest
7 голосов
/ 24 февраля 2011

Я знаю, что есть возможность использовать некоторые функции для изменения форм ядра друпала: hook_form_alter(). Можем ли мы использовать это с формами Drupal, созданными с помощью модуля Webform?

Ответы [ 5 ]

14 голосов
/ 02 октября 2012

В Drupal 7 вы можете использовать hook_form_alter() или hook_form_<formid>_alter(), что вам больше нравится.Просто убедитесь, что вы правильно указали названия и параметры.Однако Drupal 6 поддерживает только hook_form_alter().

Когда вы создаете эти функции, также помните, что Drupal может не всегда использовать их, пока вы не очистите кеш.

Еще одна важная вещь, на которую следует обратить внимание: если вы хотите внести изменения в поля веб-формы, вы должны внести изменения в $form['submitted'].Первоначально я совершил ошибку, пытаясь отредактировать $form['#node']->webform['components'], но ничего не изменилось.

Дополнительную информацию можно найти здесь: http://drupal.org/node/1558246

Надеюсь, что это поможет.

6 голосов
/ 29 июня 2011

Вы можете сделать это,

вам просто нужен идентификатор узла, а затем использовать идентификатор как в hook_form_ _alter ()

сгенерированный FORMID является webform_client_form_

где NODEID - это идентификатор узла

, поэтому если у вас есть модуль с именем mymodule и узел с идентификатором 44, который имеет веб-форму

function mymodule_form_webform_client_form_44_alter(&$form, &$form_state) {
// code here;
}
3 голосов
/ 22 июня 2011

Вы можете использовать hook_form_alter(), получая доступ к элементам через $form['submitted'].

0 голосов
/ 24 февраля 2011

Да, если по какой-то причине вам нужно внести изменения в веб-форму, чего нельзя сделать, отредактировав узел веб-формы, вы можете использовать hook_form_alter, чтобы изменить форму, так как веб-форма создается формой апи.

Тем не менее, поищите в некоторых углах веб-формы - в ней уже есть несколько вариантов динамического заполнения или изменения частей формы.

0 голосов
/ 24 февраля 2011

Я не совсем уверен, что вы пытаетесь сделать, но поскольку модуль веб-формы создает тип контента - веб-форму - вы можете изменять формы, созданные веб-формой, исключительно через интерфейс администратора - добавлять новые входы и типы ввода, указывать, являются ли они требуется или нет и т. д.

например, форма «свяжитесь с нами» может содержать любые данные, которые вы хотите - в отличие от основной формы контакта Drupal, в которой IIRC имеет только адрес электронной почты и текстовое поле.

...