2011-07-18 78 views
2

在Drupal網絡表單中,我想在通過驗證器時更改提交的值(例如去除任何非數字字符)。如何在Drupal Webform的驗證器中替換字段值?

我按照驗證碼自述添加hook_webform_validation_validators並執行hook_webform_validation_validate鉤子。但是我找不到一個返回參數來改變提交的webform值。

例如,如果用戶輸入$12,340,我想失敗的提交和。當用戶提交了第二次更新的Web窗體值12340,新價值12340將通過驗證和保存。

回答

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()方法表單驗證過程中更改提交表單值。