Drupal FAPI:如何更改验证函数中的值?
Drupal FAPI: How do I change a value in the validation function?
在下面的代码中,我尝试将基础表单更新为新值,但该值似乎没有正确更新。
function msul_tgif_xml_basic_search_form_validate($form, &$form_state) {
//$Offset is computed properly as verified by dpm.
$form_state['complete form']['SearchOptions']['Offset']['#value'] = $Offset;
}
function msul_tgif_xml_basic_search_form_submit($form, &$form_state) {
$form_state['rebuild'] = TRUE;
}
当我 return 到 msul_tgif_xml_basic_search_form
、$formstate['values']['Offset']
正确显示新的计算值时,但是当我用新值重新创建表单时,它没有正确更新。 msul_tgif_xml_basic_search_form
函数的相关部分是:
$form['SearchOptions']['Offset'] => [
'#type' => 'textfield',
'#title' => t('Start with result:'),
'#required' => FALSE,
'#default_value' =>
isset($form_state['values']['Offset']) ?
$form_state['values']['Offset'] : 1,
'#size' => 6,
'#description' => t('blah'),
'#element_validate' => [
'element_validate_integer_positive'
],
];
正如我所说,重新生成的表单仍然包含用户最后输入的内容,并且不会根据代码告诉它的内容进行更新。关于我做错了什么的任何想法......我花了大约 25 个小时试图让它工作。
以上我都试过了,我也试过form_set_value()
.
我觉得这不是正确的答案,它看起来有点乱,但确实有效,我更改了 $form_state['input']['Offset']
的值并且有效。希望这对其他人也有帮助。
在下面的代码中,我尝试将基础表单更新为新值,但该值似乎没有正确更新。
function msul_tgif_xml_basic_search_form_validate($form, &$form_state) {
//$Offset is computed properly as verified by dpm.
$form_state['complete form']['SearchOptions']['Offset']['#value'] = $Offset;
}
function msul_tgif_xml_basic_search_form_submit($form, &$form_state) {
$form_state['rebuild'] = TRUE;
}
当我 return 到 msul_tgif_xml_basic_search_form
、$formstate['values']['Offset']
正确显示新的计算值时,但是当我用新值重新创建表单时,它没有正确更新。 msul_tgif_xml_basic_search_form
函数的相关部分是:
$form['SearchOptions']['Offset'] => [
'#type' => 'textfield',
'#title' => t('Start with result:'),
'#required' => FALSE,
'#default_value' =>
isset($form_state['values']['Offset']) ?
$form_state['values']['Offset'] : 1,
'#size' => 6,
'#description' => t('blah'),
'#element_validate' => [
'element_validate_integer_positive'
],
];
正如我所说,重新生成的表单仍然包含用户最后输入的内容,并且不会根据代码告诉它的内容进行更新。关于我做错了什么的任何想法......我花了大约 25 个小时试图让它工作。
以上我都试过了,我也试过form_set_value()
.
我觉得这不是正确的答案,它看起来有点乱,但确实有效,我更改了 $form_state['input']['Offset']
的值并且有效。希望这对其他人也有帮助。