我有一个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);
}
}
答案 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)
$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)
确定,
当流入流时,在其中一个函数中的某个地方,变量不作为参考传递,所以你实际上松开了你改变的信息。我通过更改核心功能并将对象作为参考传递来修复此问题。