在 Drupal Webform 中,我想在通过验证器时更改提交的值(例如去除任何非数字字符)。
我按照验证器自述文件添加hook_webform_validation_validators
并实现hook_webform_validation_validate
挂钩。但是我找不到返回参数来更改提交的网络表单值。
例如,如果用户输入$12,340
,我想提交失败并将webform值更新为12340
。当用户第二次提交时,新值12340
将通过验证器并被保存。
在 Drupal Webform 中,我想在通过验证器时更改提交的值(例如去除任何非数字字符)。
我按照验证器自述文件添加hook_webform_validation_validators
并实现hook_webform_validation_validate
挂钩。但是我找不到返回参数来更改提交的网络表单值。
例如,如果用户输入$12,340
,我想提交失败并将webform值更新为12340
。当用户第二次提交时,新值12340
将通过验证器并被保存。
我不认为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()
方法在表单验证期间更改提交的表单值。