无法使用drupal form api获取复选框值

Mav*_*ick 1 drupal drupal-6 drupal-fapi drupal-forms drupal-modules

我在drupal中有表格,上传图片并且里面有很少的复选框.这是表格:

$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.')
  );
Run Code Online (Sandbox Code Playgroud)

这是我的提交功能,我正在处理图像上传和抓取复选框值.我收到成功消息,图像上传但没有获得复选框的值.

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']);
}
Run Code Online (Sandbox Code Playgroud)

Cli*_*ive 5

当您#options在FAPI元素上使用时,传递给它的值$form_state 数组键,因此您不需要使用array_keys().

我不确定你为什么使用checkboxesyes/no,通常会使用一个简单的checkbox元素.但是,如果这真的是你想要做的:

  1. #options不能将选项包含在0数组键中,它将自动过滤掉,您永远不会知道是否已选中该选项.
  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;
Run Code Online (Sandbox Code Playgroud)