我創建了一個小模塊,用於改變名爲「form_mods」的表單。我正在改變的形式是「user_profile_form」。我爲額外的字段添加了一個名爲「Profile」的類別。 我在Drupal管理員中創建了一個名爲「profile_state」的選擇字段,我在模塊中改變了它,使其具有一個key =>值列表狀態,並且以管理員身份登錄時正在爲我工作,但嘗試登錄的匿名用戶註冊看到一個空狀態選擇字段。這裏是否存在權限問題?我試圖在該字段中添加'access'=> user_access('訪問內容'),但這不起作用。這裏是我的代碼:Drupal hook_form_alter匿名用戶看不到字段
function form_mods_form_alter($form, $form_state, $form_id) {
switch ($form_id) {
## user_profile_form ###################################################################################
case 'user_profile_form': // This is our form ID.
//echo '###'.$form['_category']['#value'].'###';
if($form['_category']['#value'] == 'Profile'){
// Modify the states dropdown list
$states = load_states_list();
$form['Profile']['profile_state'] = array(
'#type' => 'select',
'#title' => t('State'),
'#options' => $states,
'#required' => TRUE,
'#default_value' => isset($form['Profile']['profile_state']['#default_value']) ? $form['Profile']['profile_state']['#default_value'] : '',
'#element_validate' => array('profile_state_validate')
);
}
####################################################################################
break;
}
}
function load_states_list() {
$states = array('' => '-- Select a state'); // add a default empty value
$results = db_query("SELECT * FROM {states_list} ORDER BY name ASC");
while ($state = db_fetch_array($results)) {
$states[$state['code']] = $state['name'];
}
return $states;
}
感謝
不挖了一個老問題,但如果解決了,你可以標記我一樣的答案?現在它已經獲得了多張選票,並解決了手頭的問題。我正在努力清理我鬆散懸掛的答案。謝謝! – mikesir87 2011-02-11 04:22:19