0

我有一个网络表单和一个自定义验证功能。两者都可以正常工作。

但是当我在验证函数中执行 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

4 回答 4

0

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

他们说

如果你想更新 $form['elem1']['elem2'] 的值,它应该存储在 $form_state['values']['elem1']['elem2'] 中,你可以设置 $element[ '#parents'] = 数组('elem1','elem2')。

希望有帮助

穆罕默德。

于 2012-03-19T07:05:45.343 回答
0

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

于 2012-03-21T15:34:50.497 回答
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'])) {
$form['extra_element'] = ... }

在您 own_validation_function_callback 中:您自己验证您的表单,可能使用 drupal_validate_form() 如果无效,则添加到您的 form_state (如果不尝试取消设置!!)

$form_state['custom_not_valid'] = TRUE;

于 2012-03-23T15:23:53.753 回答
-1

行,

发生的情况是,当通过流程时,在某个函数的某处,变量没有作为参考传递,因此您实际上丢失了您更改的信息。我通过更改核心功能并将对象作为参考传递来解决此问题。

于 2012-07-01T21:19:39.760 回答