如何在Drupal Webform的验证器中替换字段值?

时间:2011-07-18 04:07:58

标签: validation drupal drupal-webform

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

我按照验证程序自述文件添加hook_webform_validation_validators并实现hook_webform_validation_validate挂钩。但是,我无法找到返回参数来更改提交的webform值。

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

1 个答案:

答案 0 :(得分: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()方法在表单验证期间更改提交的表单值。