我創建了一個模塊,它向用戶登錄塊窗體添加一個字段以顯示錯誤。我想在新字段中顯示錯誤,而不是使用form_set_error()
。我能夠看到登錄塊中的警告字段。但是,當我提交錯誤時,它不會顯示錯誤。未使用form_set_error()顯示Drupal登錄錯誤消息()
代碼如下。一旦出現錯誤,我不明白如何刷新表單的值。
function usermoved_form_user_login_block_alter(&$form, &$form_state) {
$form['warning'] = array(
'#value' => t('oops'),
'#weight' => 11
);
$form['#submit'][] = 'usermoved_form_submit_code';
}
function usermoved_form_submit_code($form, &$form_state) {
global $user;
if (!$user->uid) {
$form['warning']['value']= "changed to someting";
}
}
我完全按照您提到的方式複製了代碼。我在usermoved_form_user_login_block_alter和usermoved_form_submit_code中輸入了echo命令。第一次在GLOBAL Array和消息中加載不了任何值。然後我輸入錯誤的id和pw stil在$ message變量中沒有值。我發現提交函數沒有被調用。因爲我也在這裏輸入了echo語句。 – user1480032
當表單驗證處理程序引發錯誤時,表單提交處理程序不會被調用;當用戶輸入錯誤的用戶名或密碼錯誤時會發生這種情況。我已經更新了我的答案。 – kiamlaluno
非常感謝您的回覆。但仍然存在一個問題。第一次我提交了錯誤的密碼,並且它沒有顯示錯誤。然後第二次輸入錯誤的密碼,並顯示錯誤。然後,我再次登錄並註銷,並嘗試相同的事情,但只有第二次顯示錯誤。我不明白原因 – user1480032