Drupal:如何在hook_user验证操作中区分新用户注册和用户密码更新?

时间:2010-05-26 06:31:57

标签: drupal-6

我正在使用hook_user验证操作来验证针对我的业务逻辑的用户注册信息。

我希望在注册和更改密码时运行单独的逻辑。

但是我无法区分这两者 - 两者都通过验证并且两者都运行相同的代码。

如何区分hook_user中的验证操作中的两个?

2 个答案:

答案 0 :(得分:0)

使用$ form_id

if ( ($form_id == 'user_profile_form' && arg(3) == NULL) {

  // validation code for updating 

}

elseif ($form_id == 'user_register') ) {

 // validation code for registering

}

答案 1 :(得分:0)

在Drupal 7中,您可以尝试以下方式:

/**
 * Implements hook_form_FORM_ID_alter().
 * Form ID: user_profile_form
 */
function foo_form_user_profile_form_alter($form, &$form_state) {
  // Set a custom form validate and submit handlers.
  $form['#validate'][] = 'foo_form_user_profile_form_validate';
  $form['#submit'][] = 'foo_form_user_profile_form_submit';
}

/**
 * Implements hook_form_FORM_ID_alter().
 * Form ID: user_register_form
 */
function foo_form_user_register_form_alter($form, &$form_state) {
  if ($form['#user_category'] == 'account') {
    // Set a custom form validate and submit handlers.
    $form['#validate'][] = 'foo_form_user_register_validate';
    $form['#submit'][] = 'foo_form_user_register_submit';
  }
}