"form_mods"というフォームを変更するための小さなモジュールを作成しました。私が変更しているフォームは "user_profile_form"です。私は「プロフィール」と呼ばれる余分なフィールドのカテゴリを追加しました。 "profile_state"というDrupal管理者のselectフィールドを作成しました。私のモジュールでキーの値の状態リストを変更していますが、管理者としてログインしていても試している匿名ユーザーレジスタには、空の状態選択フィールドが表示されます。ここにアクセス許可の問題はありますか?私は 'access' => user_access( 'access content')をフィールドに追加しようとしましたが、うまくいきませんでした。ここに私のコードです: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