加入Drupal注册并根据业务逻辑验证用户信息

use*_*803 8 hook registration drupal-6

我想挂钩注册模块.我已经拥有一个使用我的旧网站的50000个用户的数据库.现在我正在迁移到Drupal.

我还没有将条目迁移到drupal数据库.我将检查我的旧数据库.

当用户尝试在Drupal中注册时,我需要检查他提供的用户名是否已经存在于50000(和不断增长的)条目列表中.如果它存在,我需要取消注册显示错误信息说用户名存在..

我应该使用哪个钩子?如果我的代码表明验证失败,我怎么能告诉drupal显示错误信息?

编辑:我挂钩到hook_user并检查'验证'操作.我能够验证并分配错误消息.但它适用于所有形式.我想仅验证新帐户创建表单.我怎样才能做到这一点?

谢谢.

Hen*_*pel 18

您应该使用注册表单注册其他验证回调函数hook_form_FORM_ID_alter(),如下所示:

// Alter the registration form
function yourModuleName_form_user_register_alter(&$form, &$form_state) {
  // Add your own function to the array of validation callbacks
  $form['#validate'][] = 'yourModuleName_user_register_validate';
}

// Perform your own validation
function yourModuleName_user_register_validate($form, &$form_state) {
  // Extract the submitted name
  $name = $form_state['values']['name'];
  // Check it according to your own logic
  $is_valid_name = your_check_for_valid_name();
  // File error, when not valid
  if (!$is_valid) {
    form_set_error('name', t('Name already taken, please choose a different one'));
  }
}
Run Code Online (Sandbox Code Playgroud)


Cam*_*ilo 6

Henrik Opel回答关于Drupal 6的工作.对于Drupal 7,使用yourModuleName_form_user_register_form_alter