像往常一样,我认为Drupal表单API中的内容很简单......我在想什么?
问题
我有一个块通过drupal_get_form()输出一个表单。在块的显示功能中,我想检查表单是否验证失败(即在表单的验证函数中有form_set_error()设置的任何错误)。
到目前为止已经尝试过......
$_SESSION['messages']['error']
- 但它们已经消失了$_POST
- 这里没什么用处form_get_errors()
中的mymodule_preprocess_page()
- 空form_get_errors()
中的mytheme_preprocess_page()
- 空我对form_get_errors()为空的电话感到困惑。它调用form_set_error()没有args - 它离开$reset = FALSE
,因此保存表单错误的静态var不会被清除。所以我不知道var在哪里被重置 - 某处是另一种形式的api函数? - 所以当我在我的模块或主题中调用它时,它是空的。
帮助吗
那么,有没有人知道在什么时候(预处理函数?)我可以在清除静态var之前调用form_get_errors()
?或者有另一个想法如何在显示表单的块中检查表单错误? (顺便说一句 - 我很确定一旦我进入drupal_get_form()
调用的函数,我就可以轻松地检查这个...但我需要知道封闭块显示函数中的错误。)
答案 0 :(得分:0)
这很难看,因为所有人都会离开,但它应该有效。
$form['#validate'][] = '_error_preservation_helper';
...
function _error_preservation_helper($form, &$form_state) {
$GLOBALS['_error_preservation_helper'] = form_get_error();
return true;
}