web-dev-qa-db-ja.com

ログインブロックからログインに失敗した場合、ログインページにリダイレクトしますか?

ログインフォームブロックがあります。ユーザーがサイトへのログインに失敗した場合、通常のエラーメッセージでユーザー/ログインページにリダイレクトしたいと思います。

2
Nada O

あなたはform_alterでこれを行うことができます

function MODULE_NAME_form_alter(&$form, $form_state, $form_id) {
  switch ($form_id) {
    case 'user_login_block':
      $form['#validate'][] = 'my_custom_login_val';
      break;
    default:
      break;
  }
}


function my_custom_login_val($form, &$form_state) {
  $form = form_get_error($form['name']) . form_get_error($form['pass']);
  if($form != '') {
    $_GET['destination'] = 'user/login';
    drupal_goto('user/login');    
  }
}

正しいログインがページにリダイレクトされた後に必要がある場合は、 ログイン先 を使用します

6
sathishkumar

ここで、hook_form_alterを使用した少し異なる答え

function MODULE_form_alter(&$form, &$form_state, $form_id)
{
    if ($form_id == "user_login_block")
    {
        $form["#validate"][] = "MODULE_validate_login";
    }
}

function MODULE_validate_login($form, &$form_state)
{
    // on successful login, the uid is set in form_state.
    if (empty($form_state["uid"]))
    {
        $_GET["destination"] = "user/login";
        drupal_goto("user/login"); 
    }
}
1
Scott Joudry