我创建了一个小模块,用于改变名为“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