我有一个 Drupal 7 表单,提交后会进行一些验证。它正在获取电子邮件地址并进行数据库查找以查看该用户是否已经存在。如果用户存在,我需要更改在通常显示错误的页面上重新呈现的表单,删除一些字段。基本上在错误页面上,无论他们通常会收到任何其他验证错误(需要名字,需要姓氏等),他们只会收到一条错误消息,上面写着“该电子邮件地址已经在系统中”,然后我此时不再希望显示除电子邮件地址字段和文件上传字段之外的任何其他字段。因此,我在尝试根据某些验证确定第一次提交后如何更改表单时遇到了麻烦。
谢谢
我有一个 Drupal 7 表单,提交后会进行一些验证。它正在获取电子邮件地址并进行数据库查找以查看该用户是否已经存在。如果用户存在,我需要更改在通常显示错误的页面上重新呈现的表单,删除一些字段。基本上在错误页面上,无论他们通常会收到任何其他验证错误(需要名字,需要姓氏等),他们只会收到一条错误消息,上面写着“该电子邮件地址已经在系统中”,然后我此时不再希望显示除电子邮件地址字段和文件上传字段之外的任何其他字段。因此,我在尝试根据某些验证确定第一次提交后如何更改表单时遇到了麻烦。
谢谢
您要做的是向验证函数中的 $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;
// }
}