2

在 Drupal Webform 中,我想在通过验证器时更改提交的值(例如去除任何非数字字符)。

我按照验证器自述文件添加hook_webform_validation_validators并实现hook_webform_validation_validate挂钩。但是我找不到返回参数来更改提交的网络表单值。

例如,如果用户输入$12,340,我想提交失败并将webform值更新为12340。当用户第二次提交时,新值12340将通过验证器并被保存。

4

1 回答 1

2

我不认为Webform Validation模块允许您更改提交的值。我已经查看了它是如何实现验证的,如果您想更改提交的值,您可以在自己的模块中执行类似的操作。

以下代码部分来自http://fleetthought.com/adding-additional-cck-validation-function-field-using-hookformalter以及 Webform Validation 模块代码。

function YOUR_MODULE_NAME_form_alter(&$form, &$form_state, $form_id) {
  if (strpos($form_id, 'webform_client_form_') !== FALSE) {
    // Simply add an additional link validate handler.
    $first = array_shift($form['#validate']);
    array_unshift($form['#validate'], $first, 'form_alterations_link_validate');
  }
}

function form_alterations_link_validate($form, &$form_state) {
  // Access submitted values through $form_state['values']['submitted']
}

在 中form_alterations_link_validate,您可以使用 Drupal 的form_set_value()方法在表单验证期间更改提交的表单值。

于 2011-07-18T14:25:49.550 回答