在验证webform期间,form_set_value()不起作用

时间:2012-03-18 20:03:36

标签: drupal-7 validation form-api

我有一个webform和一个自定义验证功能。这两个都很好。

但是当我在验证函数中执行form_set_value时,没有任何反应。

任何人都可以帮助我

function test_webservices_validate(&$form, &$form_state) {

    if (form_get_errors())
        return;
    $form_values = $form_state['values']['submitted'];

    $Address = _test_webservices_translate($values);
    if (!$Address->succes) {
            form_set_value($form['submitted']['voornaam'], 'sdfdsfsd', $form_state);
            dpm($form);
            dpm($form_state);
    } else {
        _test_webservices_handledcm($form, $form_state, $Address);
    }
}

4 个答案:

答案 0 :(得分:0)

请参阅api.drupal.org上的form_set_value()文档。

他们说

  

如果你想更新$ form ['elem1'] ['elem2']的值,那就是   应该存储在$ form_state ['values'] ['elem1'] ['elem2']中,你会   set $ element ['#parents'] = array('elem1','elem2')。

希望有所帮助

穆罕默德。

答案 1 :(得分:0)

您能提供更多信息吗?验证后该值是否应与ajax一起出现?另外,请不要忘记验证功能底部的add $form_state['rebuild'] = TRUE;。这将导致$ form数组根据$ form_state中的值重建。 form_set_value唯一做的就是更新$ form_state数组

答案 2 :(得分:0)

嗯,另一种方法可能是你改变形式并做三件事: 1)添加到您的按钮(提交?):

  

$form['submit']['#limit_validation_errors'] = array();

2)使用

覆盖所有验证功能
  

$form['#validate'] = 'own_validation_function_callback'

3)检查自定义有效的form_state变量是否设置

  

if(isset($ form_state ['custom_not_valid'])){
  $形式[ 'extra_element']   = ...}

在你的own_validation_function_callback中你: 自己验证表单,也许使用drupal_validate_form() 如果无效,则添加到form_state(如果没有尝试取消设置!!)

  

$form_state['custom_not_valid'] = TRUE;

答案 3 :(得分:-1)

确定,

当流入流时,在其中一个函数中的某个地方,变量不作为参考传递,所以你实际上松开了你改变的信息。我通过更改核心功能并将对象作为参考传递来修复此问题。