我正在尝试在数据库中保存表单状态,并希望在列表页面中查看其错误验证。
即,我想从我的数据库中验证以前保存的表单状态。
这是节点类型表单。
我已经尝试node_validate
它无效,因为我在提交节点之前获取数据。所以没有nid,因为它不起作用
并尝试了drupal_validate_form
,但它正在显示
[form_token] => The form has become outdated. Copy any unsaved work in the form below and then reload this page
修改
任何一个有任何帮助的人,“如何在数据库中保存表单输入并从数据库中以不同的形式进行检索。
提前谢谢
任何帮助都是最值得认可的。
答案 0 :(得分:2)
如果你查看Drupal Core,你会在includes/form.inc
函数的drupal_validate_form
中看到这一点:
if (isset($form['#token'])) {
if (!drupal_valid_token($form_state['values']['form_token'], $form['#token'])) {
$path = current_path();
$query = drupal_get_query_parameters();
$url = url($path, array('query' => $query));
// Setting this error will cause the form to fail validation.
form_set_error('form_token', t('The form has become outdated. Copy any unsaved work in the form below and then <a href="@link">reload this page</a>.', array('@link' => $url)));
// Stop here and don't run any further validation handlers, because they
// could invoke non-safe operations which opens the door for CSRF
// vulnerabilities.
$validated_forms[$form_id] = TRUE;
return;
}
}`
这表明此处正在设置“表单已过时”消息。因此,您可以通过取消设置isset($form[#token'])
来使#token
条件为false,以防止出现此消息。
您只需加载要验证的表单状态,然后调用即可
在致电unset($form[#token']);
之前drupal_validate_form
。