今天在写模块的时候遇到一个问题。checkboxes的默认值怎么也获取不到。
需要说明一下,drupal的from API中,生成checkbox有二个方法,一种是自已循环生成,代码如下:
<?php
/**
* form['workflow']的其它内容
*/
foreach($data as $k=>$v){
$form['workflow'][$k] = array(
'#type' => 'checkbox',
'#title' => t($v),
'#default_value' => variable_get('nodewords_'. $form['#node_type']->type, 1),
);
?>
另外一种叫 type= checkboxes,这样可以生成一组checkbox.这种方法适合大量的checkbox,我在模块中这样写:
<?php
$form['ad_box']['select_ad_box'] = array(
'#type' => 'checkboxes',
'#title' => t('Select the AD Info Box'),
'#required' => FALSE,
'#default_value' => test_default_value(),
'#options' => $options,
'#description' => t('Select the AD Info Box')
);
?>
$options为一个数组,格式为array(4=>'this is title',5='this is title1'),
这样,drupal会自动生成一组checkbox,但是当我设置 #default_value的时候,却取不到值,开始我把它设为1,没有反应,我想是不是要和options的值对应,然后drupal在生成的时候会一一对应呢,结果还是不行。
最后google了一下,终于找到答案了,原来#default_value的值是$options中被选中的那个,如果想this is title这项被选中,则'#default_value' => array(0=>4)就可以了