Как заменить значение поля в валидаторе Drupal Webform? - PullRequest
2 голосов
/ 18 июля 2011

В веб-форме Drupal я хотел бы изменить представленное значение (например, чтобы убрать любой нецифровый символ) при прохождении через валидатор.

Я следую readme валидатора, чтобы добавить hook_webform_validation_validatorsи реализовать крюк hook_webform_validation_validate.Однако я не могу найти возвращаемый параметр для изменения отправленного значения веб-формы.

Например, если пользователь вводит $12,340, я хотел бы отказать в представлении и обновить значение веб-формы до 12340. Когдапользователь отправляет второй раз, новое значение 12340 пройдет валидатор и будет сохранено.

1 Ответ

2 голосов
/ 18 июля 2011

Не думаю, что модуль Webform Validation позволяет изменять отправленные значения. Я посмотрел, как он реализует проверку, и вы можете сделать нечто подобное в своем собственном модуле, если хотите изменить переданное значение.

Следующий код частично взят из http://fleetthought.com/adding-additional-cck-validation-function-field-using-hookformalter, а также из кода модуля проверки веб-формы.

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() для изменения отправленных значений формы во время проверки формы.

...