我正在尝试使用 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>
// "
任何人都知道问题是什么,修复/解决方法是什么?
渲染无线电或其他东西有任何已知问题吗?
谢谢!
答案 0 :(得分:3)
您无法在没有表单的情况下呈现表单元素,因为radios元素具有form_process_radios()的进程回调,只有在与表单API一起使用时才会调用该进程回调。
您可以尝试以下方式:
$form['radiosinput'] = expand_radios($form['radiosinput']);
return drupal_render($form);
答案 1 :(得分:3)
对于D7,请使用form_process_checkboxes()
答案 2 :(得分:0)
一小时前我正在做类似的事情。你的代码粘贴到我的表单中工作得很好。
尝试
drupal_get_form( 'your_form_id');
这有用吗?
答案 3 :(得分:0)
我想在表格中呈现的复选框元素遇到同样的问题。我发现你的答案有点迟了。
因此,对于所有其他搜索,如何使用drupal_render和expand_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']));
答案 4 :(得分:0)
我可以补充一点,在D6中你需要添加#parents =&gt; array()到无线电元素。 如果不是,在我的情况下,expand_radios将抛出错误。 Drupal 6.22