【问题标题】:Drupal form error redirectDrupal 表单错误重定向
【发布时间】:2013-08-18 17:19:39
【问题描述】:

我需要帮助解决这个问题:

在我的 Drupal 7 站点中,如果登录表单无效,我需要执行重定向到某个页面,仅在这种情况下,并且仅用于登录表单。 做这个的最好方式是什么?调用什么函数? 提前致谢。

【问题讨论】:

  • 您的意思是“如果用户输入错误的值(用户名、密码等)则重定向?”
  • 是的,但仅适用于登录表单。

标签: forms drupal drupal-7


【解决方案1】:

您必须使用hook_form_alter 并添加或更改#validate 选项。更喜欢第二种方法:

function MYMODULE_form_alter(&$form, $form_state, $form_id) {
 if ($form_id == 'user_login') {
  $form['#validate'][] = 'MYMODULE_user_login_form_validate';
 }
}

function MYMODULE_user_login_form_validate($form, &$form_state) {
// Do some validation here. Better take the same codes from the validation functions below.
  if (...) {
   drupal_goto('CUSTOM_PATH');
  }
}

您可以在 ROOT/modules/user/user.module 文件第 2113 行找到验证函数

function user_login_default_validators() {
  return array('user_login_name_validate', 'user_login_authenticate_validate', 'user_login_final_validate');
}

类似问题:

【讨论】:

    【解决方案2】:

    使用 hook_user_login 方法也可以达到同样的效果,

    
    
        /**
         * Implements hook_user_login();
         */
        function MODULE_NAME_user_login(&$edit, $account) {
            $url = 'PAGE_TO_BE REDIRECTED';
            if (isset($user->uid) && $user->uid > 0) {
                drupal_goto($url);
            }
        }
    
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-08-01
      • 1970-01-01
      • 1970-01-01
      • 2011-12-30
      • 1970-01-01
      • 2017-10-10
      • 2013-07-31
      • 2013-08-08
      相关资源
      最近更新 更多