2011-02-02 24 views
1

我試圖使用drupal_render()來呈現單個表單元素。我可以成功渲染'#type' => 'textfield' or 'radio' or 'whatever'的元素。

當我嘗試渲染一個'#type' => 'radios'的元素出現問題時。我找不到爲什麼,但簡單的收音機不會顯示。

$options = array(
    '0' => 'no option', 
    '1' => 'option 1', 
    '2' => 'option 2', 
    '3' => 'option 3', 
    '4' => 'option 4', 
    '5' => 'option 5' 
); 

$form['radiosinput'] = array(
    '#type'    => 'radios', 
    '#title'   => 'radios title', 
    '#description'  => 'radios description', 
    '#default_value' => 0, 
    '#options'   => $options, 
    '#required'   => TRUE, 
); 

var_dump(drupal_render($form)); 

// string(257) "<div class="form-item"> 
//  <label>radios title: <span class="form-required" title="This field is required.">*</span></label> 
//  <div class="form-radios"></div> 
//  <div class="description">radios description</div> 
//  </div> 
// " 

任何人都知道出了什麼問題,並修復/解決方法嗎?
是否有任何已知的渲染無線電或其他問題?

謝謝!

回答

3

您無法在沒有表單的情況下呈現表單元素,因爲無線電元素具有僅在與表單API一起使用時調用的form_process_radios()的流程回調。

你也許可以嘗試類似:

$form['radiosinput'] = expand_radios($form['radiosinput']); 
return drupal_render($form); 
0

我在一小時前做了類似的事情。您的代碼粘貼到我的表單中工作得很好。

嘗試

drupal_get_form( 'your_form_id');

這是否行得通?

+0

謝謝,但我不渲染一種形式,只是特定元素...如果我把它給表單中的代碼也能正常工作。 – acm 2011-02-02 11:24:31

+1

@andre matos知道爲什麼你沒有表單渲染單選按鈕可能會有幫助。 – 2011-02-02 15:22:45

+0

您可以通過主題圖層運行表單元素嗎? theme_radios()或其他... – Rimian 2011-02-03 05:08:38

0

我曾與複選框元素,我想在一個表中呈現同樣的麻煩。我發現你的答案有點晚了。

因此,對於所有其他搜索如何呈現一個複選框元素與drupal_renderexpand_checkboxes

$form['test'] = array(
    '#type' => 'checkboxes', 
    '#title' => t('Test'), 
    '#description' => t('The description appears usually below the checkboxes.'), 
    '#options' => array(1,2,3,4), 
); 

drupal_render(expand_checkboxes($form['test'])); 
0

我想補充的是,在D6需要添加#parents =>陣列()的無線電元件。 如果不是,expand_radios會拋出一個錯誤,在我的情況。 Drupal的6.22

3

對於D7使用form_process_checkboxes()