我在Drupal 7網站上禁用了用戶註冊。只有管理員可以創建帳戶。根據角色向Drupal 7用戶配置文件添加自定義字段
我想爲用戶添加自定義字段,具體取決於用戶已由管理員分配的角色。現在我想向註冊系統添加一些字段,這些字段取決於管理員選擇的角色。
例如:如果管理員已創建角色A的用戶帳戶和角色B的另一個帳戶。 當用戶登錄時,應要求用戶A輸入電話號碼,而應請求第二個用戶輸入家庭地址。
我試過profile2模塊,但我無法實現我想要的。
我在Drupal 7網站上禁用了用戶註冊。只有管理員可以創建帳戶。根據角色向Drupal 7用戶配置文件添加自定義字段
我想爲用戶添加自定義字段,具體取決於用戶已由管理員分配的角色。現在我想向註冊系統添加一些字段,這些字段取決於管理員選擇的角色。
例如:如果管理員已創建角色A的用戶帳戶和角色B的另一個帳戶。 當用戶登錄時,應要求用戶A輸入電話號碼,而應請求第二個用戶輸入家庭地址。
我試過profile2模塊,但我無法實現我想要的。
有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「]'=> array('checked'=> TRUE),」line將需要最多的工作,即「角色」將需要匹配「角色」複選框,並且「A」需要在檢查時與A的實際值相對應。
如果您的模塊中沒有其他form_alter用法,您可以考慮用「yourmodule_user_register_form_alter」替換函數名稱。
使用User_Role_Field模塊可以完全按照您的需要進行操作。如果您需要更好地配置每個角色,請使用Field_Permissions模塊。
請注意,用戶註冊後,字段顯示在用戶配置文件下而不是註冊表單中。你的問題有點混亂...
謝謝! Field_Permissions很好地完成了這項工作 –
嗨馬赫迪alikhasi,請嘗試寫出精確的問題! @ TheodorosPloumis的答案也解決了你想要的問題。接受他的回答是正確的,因爲這有助於用戶解決類似問題,以更快解決問題 –