您在這裡

Drupal Form的render問題

fuchen's 的頭像
fuchen 在 2013-01-23 (三) 12:53 發表

以下是我的測試碼,利用測試在hook_form_alter()裡面,我不懂得是為什麼$form['test1']用drupal_render解出來的跟return回去解出來的html會不一樣,請教各位大大form產生的方式。
下面這個是from的產生:

$form['test1'] = array(
'#type' => 'select',
'#multiple' => TRUE,
'#title' => t('Category of event'),
'#required' => FALSE,
'#options' => array(
0 =>'a',
1 =>'b',
2 =>'c',
3 =>'d',
),
'#size' => 5,
'#weight' => 0,
//'#default_value' => array(1, 3),
'#value' => array(1, 3)
);

$str = drupal_render($form['test1']); //from被unset
$form['test2'] = array('#markup' => $str);

$form['test1'] = array(
'#type' => 'select',
'#multiple' => TRUE,
'#title' => t('Category of event'),
'#required' => FALSE,
'#options' => array(
0 =>'a',
1 =>'b',
2 =>'c',
3 =>'d',
),
'#size' => 5,
'#weight' => 0,
//'#default_value' => array(1, 3),
'#value' => array(1, 3)
);
return $form;

form return回去產生的HTML

Category of event
abcd


drupal_render產生的HTML

Category of event
abcd

可以看得出來drupal_render不支援#multiple特性,#default_value好像也不支援...

使用drupal_render(form_process_select($form['test1']));可以產生multiple html
但是這是正確的解法嗎?