我在D7中有一个ajax多步形式。
当用户尝试进入第4步时,如果他们已登录,他们可以继续使用该表单,否则他们必须登录。
在此特定情况下,用户在最后一步之前“离开”多步表单是不可接受的,因此不能重定向到用户/登录。
我所做的是尝试在多步骤表单中复制登录表单并提交给动态登录用户。
if(isset($form_state['values']['step_4']['user'])){
$uname = $form_state['values']['step_4']['user'];
}
if(isset($form_state['values']['step_4']['password'])){
$password = $form_state['values']['step_4']['password'];
}
if (($uname != '') && ($password != '')) {
if($uid = user_authenticate($uname, $password)) {
global $user;
$user = user_load($uid);
$arr = array ('name'=>$uname,'pass'=>$password);
user_login_finalize($arr);
}
else form_set_error('step_4', t('Wrong Username'));
}
此代码有效,并且用户已登录,但有两个大问题我无法修复并假设无法修复:
1.登录后,step4加载了一条错误消息,显示“表格会话已过期”,可能是因为用户“已更改”。我对Drupal很新,所以我真的不知道如何处理这个问题。
2.用户菜单,逻辑上没有更新,我找不到有关如何动态“刷新”它的文档。
非常感谢任何帮助。