【发布时间】:2014-12-18 11:47:38
【问题描述】:
我希望将自定义验证码输入添加到 Drupal 网络表单中。我希望使用的验证码不能作为插件使用,所以我想在表单输出时挂钩,然后添加我的验证码演示脚本。
我已经知道如何使用<theme>_form_alter() 捕获表单。我不太确定的是如何在某个时刻将元素注入表单。如果有人知道如何实现这一点,那将会很有用。
【问题讨论】:
标签: php drupal drupal-7 drupal-webform
我希望将自定义验证码输入添加到 Drupal 网络表单中。我希望使用的验证码不能作为插件使用,所以我想在表单输出时挂钩,然后添加我的验证码演示脚本。
我已经知道如何使用<theme>_form_alter() 捕获表单。我不太确定的是如何在某个时刻将元素注入表单。如果有人知道如何实现这一点,那将会很有用。
【问题讨论】:
标签: php drupal drupal-7 drupal-webform
您可以在表单提交时添加带有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..中验证。
【讨论】: