我有一个Drupal 7表单,在提交后会发生一些验证。它正在获取电子邮件地址并进行数据库查找以查看该用户是否已存在。如果用户存在,我需要更改在通常显示错误的页面上重新呈现的表单,删除一些字段。基本上在错误页面上,无论他们通常会收到任何其他验证错误(需要名字,姓名等),他们只会收到一条错误消息,上面写着“该电子邮件地址已经在系统中”然后我除了电子邮件地址字段和文件上载字段之外,此时不再希望显示任何其他字段。因此,我无法在第一次提交后根据某些验证来弄清楚如何更改表单。
谢谢
答案 0 :(得分:0)
您要做的是将一些数据添加到验证函数中的$ form_state变量中,该变量可以告知表单函数它应该提供哪些字段。
未经测试的例子:
function my_form($form, &$form_state){
$form['my_field1'] = array('#markup' => 'my default field');
// look for custom form_state variable
if ($form_state['change_fields']) {
$form['my_field2'] = array('#markup' => 'my new field');
}
}
function my_form_validate($form, &$form_state){
// if not valid for some reason {
form_set_error('my_field1','this did not validate');
$form_state['change_fields'] = true;
// }
}