2012-03-31 14 views
1

drupalに画像をアップロードするフォームがあり、そこにチェックボックスがほとんどありません。 はこちらのフォームである:ここdrupal form apiを使用してチェックボックスの値を取得できません

$form['checklist_fieldset'] = array(
    '#type' => 'fieldset', 
    '#title' => t('Check List'), 
    '#collapsible' => FALSE, 
    '#collapsed' => FALSE, 
); 
$form['checklist_fieldset']['heating'] = array(
    '#type' => 'checkboxes', 
    '#title' => t('Heating options'), 

    '#options' => array(
    '0' => t('Yes'), 
    '1' => t('No') 
), 
    '#description' => t('Heating details.') 
); 

とは私、私は画像のアップロードを処理し、同様のチェックボックスの値をつかんでい機能を提出します。私は成功メッセージを受け取り、画像はアップロードされていますが、チェックボックスの価値は得られません。あなたはFAPI要素に#optionsを使用する場合

function property_add_view_submit($form,&$form_state){ 
$validators = array(); 



if($file = file_save_upload('p_file1',$validators,file_direcotry_path)){ 
$heating = array_keys($form_state['values']['heating']); 
drupal_set_message(t('Property Saved! '.$heating)); 
dpm($form_state['values']['heating']); 
} 

答えて

5

$form_stateに渡された値が配列のキーあるので、あなたはarray_keys()を使用する必要はありません。

私はなぜyes/noにcheckboxesを使用しているのかよく分かりませんが、通常は単純なcheckbox要素を使用します。しかし、それはあなたが何をしたいのか本当にだ場合:

  1. あなた#options0とオプションを含めることはできません配列のキーとして、それは自動的に除外され、そのオプションがチェックされている場合、あなたが知っていることは決してないだろう。
  2. $heating_options_chosen = array_filter($form_state['values']['heating']を使用して、選択したチェックボックスオプションを取得する必要があります。

私は正直にあなたのコードは、このかかわらようになるはずだと思う:チェックボックスを使用して

$form['checklist_fieldset']['heating'] = array(
'#type' => 'checkbox', 
'#title' => t('Heating options'), 
'#options' => array(
    '1' => t('Yes'), 
    '0' => t('No') 
), 
    '#description' => t('Heating details.') 
); 



$heating_checked = $form_state['values']['heating'] == 1; 
+0

well..iam私はチェックボックスグループとしてそれを使用したかったので。 – Maverick

+0

ああ、それはより意味がある、答えはいずれかの助けを喜んで – Clive

+1

チェックボックスの値/オプションに応じてテキストフィールドを切り替えるには? @Clive –