Я ищу, чтобы добавить пользовательский ввод капчи в веб-форму Drupal. Капча, которую я хочу использовать, недоступна в качестве плагина, поэтому я хочу перехватить форму, когда она выводится, а затем добавить свой скрипт презентации капчи.
Я уже знаю, как поймать форму с <theme>_form_alter()
, В чем я не уверен, так это в том, как я могу вводить элементы в форму в определенный момент. Если кто-нибудь знает, как этого добиться, было бы полезно.
Вы можете добавить свой сценарий с preventDefault
на форме отправить. Пройдите проверку на стороне клиента и отправьте форму. Добавление вашего JavaScript будет следующим:
/**
* Implements hook_form_alter().
*/
function MODULENAME_form_alter(&$form, &$form_state, $form_id) {
dpm($form_id);
if ($form_id == 'YOUR_FORM_ID_HERE') { // Example Form ID: webform_client_form_23
$form['#attached']['js'][] = drupal_get_path('module', 'MODULENAME') . 'path/to/example_file.js';
// OR
drupal_add_js(drupal_get_path('module', 'MODULENAME') . 'path/to/example_file.js');
}
}
Вы можете сделать это с легкостью, переопределив создание формы по умолчанию. Создайте файл в папке вашего шаблона для вашей веб-формы, скажем, его webform-form-22.tpl.php
..
Использовать $form
переменная, которая доступна по умолчанию. Поместите элементы формы из $form
Переменный и поместите вашу собственную капчу в соответствии с вашими требованиями в любом месте формы, и подтвердите в хуке custom_module_webform_submission_insert
..