Answers:
有一个模块可以做到这一点。
签出生成密码。
它在配置»人员»帐户设置中引入了此附加设置:
用户可以在注册时输入密码。如果保留为空,将生成一个随机密码。这通常在管理员创建帐户时适用。
然后,在创建帐户时,将密码字段保留为空,但请确保还选中“添加用户”页面上的此复选框:
通知用户新帐户
这两个设置的结果是,当管理员创建帐户时,模块会生成一个随机密码,并且会向用户发送一封电子邮件,其中包含有关该帐户的通知,并提示用户在包含的一次性登录链接中设置密码在通知中。
如果您想学习如何做,请阅读源代码。
user_password(mt_rand(10, 50))
然后在提交表单时随机使用或类似设置。
如果您不希望安装“ Generate Password”模块并且习惯使用钩子,则可以选择以下方法:
/**
* Implements hook_form_FORM_ID_alter().
*
* Remove the password field when admin is creating an account.
*/
function HOOK_form_user_register_form_alter(&$form, &$form_state, $form_id) {
if ($form['administer_users']['#value']) {
$form['account']['pass']['#access'] = FALSE;
$form['account']['pass']['#value']['pass1'] = user_password();
$form['account']['pass']['#value']['pass2'] = $form['account']['pass']['#value']['pass1'];
}
}
您可以根据自己的口味使其更精致。就目前而言,它总是隐藏密码字段并提供一个值,管理员将不得不编辑新帐户以设置特定值。此外,它会将“ notify”默认值设置为off,而您可能更喜欢选择on。
按照@joe_flash答案进行更新(但形式略紧凑):处理元素时,密码字段将扩展为两个子字段(“ pass1”和“ pass2”)。
AdamS的答案几乎在那里。由于在处理元素(form_process_password_confirm()
)时,密码字段将扩展为两个子字段(“ pass1”和“ pass2” ),因此您需要执行以下操作:
/**
* Implements hook_form_FORM_ID_alter().
*/
function acfo_common_form_user_register_form_alter(&$form, &$form_state, $form_id) {
// Do special for user admins.
if ($form['administer_users']['#value']) {
// Default to sending user an account creation notification.
$form['account']['notify']['#default_value'] = 1;
// We'll send a one-time login link in lieu of setting a password here.
$pass = user_password();
$form['account']['pass']['#value'] = array(
'pass1' => $pass,
'pass2' => $pass,
);
$form['account']['pass']['#access'] = FALSE;
}
}
hook_init()
,以drupal_add_css()
在每个页面加载...它也复制核心的user_password()
。没有通过气味测试。