2011-02-02 29 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()