在Drupal中挂钩用户注册

时间:2010-03-05 00:22:47

标签: drupal

我有一个网站,其中一些用户将由我们的员工注册,并且不会有与之关联的电子邮件。我想将电子邮件字段保留为必填字段,因此我设计了一个随机电子邮件生成器。

 function generateRandomEmail() {
     $email = 'noemail'. rand(0,1000000) . '@noemail.com';
     return $email;
  }

所以,我将它附加到用户注册表格alter,它工作得很好,有效地为这些用户生成了一封电子邮件。

但是,在此过程中,与主帐户部分关联的所有其他字段(密码,用户名,通知等)都消失了。我的问题是,有一种快速的方法来填充我不想改变的其他字段吗?我用过drupal_render($ form);在tpl.php中,但它没有以alter。的形式工作。

这是我改变形式的地方:

  function accountselect_user($op, &$edit, &$account, $category) {
    if ($op == 'register') {

       $fields['account']['mail'] = array(
       '#type' => 'textfield',
       '#default_value' => generateRandomEmail(),
    );

1 个答案:

答案 0 :(得分:4)

您目前正在使用hook_user进行操作,但这是错误的地方。在$ op'registration'上,您可以返回要注册到注册过程的其他字段,但不能更改现有字段。请使用hook_form_alter()hook_form_FORM_ID_alter(),例如:

function yourModule_form_user_register_alter(&$form, &$form_state) {
  $form['account']['mail']['#default_value'] = generateRandomEmail();
}

您可能想要添加一个检查,确认请求实际上来自员工,因为上面的代码也会预填充正常注册表单的电子邮件字段!


此外,请不要使用现有的第三方域名生成“随机”邮件地址(例如“nomail.com”)。使用保留的'example.com',或者更好的是你自己拥有的那个!