我有一个简单的表单,在节点显示页面上有一个选择菜单。有没有一种简单的方法来验证我的回调函数中的表单?通过验证我并不是说任何高级的东西,只是为了检查表单数组中实际存在的值。例如,在没有 ajax 的情况下,如果我的选择菜单有 3 个项目,并且我添加了第 4 个项目并尝试提交表单,drupal 将给出类似于“做出了非法选择,请联系管理员”的错误。
使用 ajax,您创建的第 4 个项目将保存到数据库中。所以我必须像这样写验证吗
if ($select_item > 0 && $select_item <= 3) {
//insert into db
}
还是有一种更简单的方法可以检查该项目是否确实存在于表单数组中?我希望有,因为没有 ajax,如果表单被操纵,drupal 将不会提交表单。谢谢。
编辑: 所以我的回调函数中基本上需要这个?
$form_state = array('storage' => NULL, 'submitted' => FALSE);
$form_build_id = $_POST['form_build_id'];
$form = form_get_cache($form_build_id, $form_state);
$args = $form['#parameters'];
$form_id = array_shift($args);
$form_state['post'] = $form['#post'] = $_POST;
$form['#programmed'] = $form['#redirect'] = FALSE;
drupal_process_form($form_id, $form, $form_state);
为了获得 $_POST['form_build_id'],我将它作为数据参数发送,对吗?在我使用 form_get_cache 的地方,看起来没有数据。现在有点迷路了。