我在Drupal 7网站上禁用了用户注册。只有管理员才能创建帐户。
我想为用户添加自定义字段,具体取决于管理员分配用户的角色。现在我想在注册系统中添加一些依赖于管理员所选角色的字段。
例如:如果管理员创建了具有角色A的用户帐户和具有角色B的另一个帐户。 当用户登录时,应要求用户A输入电话号码,而应要求第二个用户输入家庭地址。
我尝试过profile2模块但是我无法达到我想要的效果。
答案 0 :(得分:2)
使用完全符合您要求的User_Role_Field模块。如果每个角色访问需要更好的配置,请使用Field_Permissions模块。
请注意,在用户注册后,字段显示在用户配置文件下,而不是注册表单中。你的问题有点令人困惑......
答案 1 :(得分:0)
有conditional_fields模块,听起来它会让你大部分都在那里。
如果做不到这一点,我会说最好的办法就是在自定义模块中使用hook_form_alter()。 类似的东西:
function yourmodule_form_alter(&$form, &$form_state, $form_id) {
if ($form_id == 'user_register') {
// Define the phone field.
$form['phone'] = array(
'#type' => 'textfield',
'#title' => t('Phone'),
'#size' => 30,
'#maxlength' => 30,
'settings' => array(
'#states' => array(
// Hide this field when role A isn't checked.
'invisible' => array(
':input[role="A"]' => array('checked' => FALSE),
),
),
),
);
// Define home address field
// [copy the snippet above & tweak to suit...]
}
}
这不太可能开箱即用(我手边没有drupal环境),但通过一些改编,它应该可以让你在那里大部分时间。
“':input [role =”A“]'=>数组('checked'=> TRUE),”行将需要最多的工作,即“角色”将需要匹配名称属性“角色”复选框,“A”在检查时需要与A的实际值相对应。
如果您的模块中没有其他form_alter用法,您可能还会考虑用“yourmodule_user_register_form_alter”替换函数名称。