我在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.')
);
这是我的提交功能,我正在处理图像上传和抓取复选框值。我收到成功消息,图像上传但没有获得复选框的值。
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']);
}
当您在FAPI元素上使用#options
时,传递给$form_state
的值是数组键,因此您不需要使用array_keys()
。
我不确定为什么你使用checkboxes
作为是/否,通常会使用一个简单的checkbox
元素。但是,如果这真的是你想要做的:
#options
不能包含0
作为数组键的选项,它将被自动过滤掉,您永远不会知道该选项是否已被选中。$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;
如果我有复选框朋友和选项是这样的
[ ] abc
[ ] def
[ ] ghi
[ ] jkl
我想知道用户标记了哪些选项,然后使用下面的功能。
if ($form_state->getValue('friends') != NULL) {
foreach ($form_state->getValue('friends') as $key => $value) {
if ($value != 0) {
$friends = $friends . ", " . $key;
$friends = substr_replace($friends, "", 0, 1);
}
}
}
如果用户选择了abc
和ghi
那么你将获得1
,3
作为$friends
的结果
如果您想知道该值,请使用$friends = $friends.", ".$value;
它对我有用..希望它也会帮助你:)