开发者

Why drupal_render($form) does not render correctly RADIOS #type?

开发者 https://www.devze.com 2023-02-08 06:07 出处:网络
I\'m trying to use drupal_render() to render a single form element. I can successfully render elements of \'#type\' => \'te开发者_运维知识库xtfield\' or \'radio\' or \'whatever\'.

I'm trying to use drupal_render() to render a single form element. I can successfully render elements of '#type' => 'te开发者_运维知识库xtfield' or 'radio' or 'whatever'.

When I try to render an element of '#type' => 'radios' something goes wrong. I can't find out why but the radios simple won't show.

$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>
// "

Anyone knows what's the problem and the fix/workaround?

Is there any known problem with rendering radios or something?

Thanks!


You can't render form elements without a form because the the radios element has a process callback of form_process_radios() that is called only when used with the form API.

You might be able to try something like:

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


For D7 use form_process_checkboxes()


I was working on something similar an hour ago. Your code pasted into my form works just fine.

Try

drupal_get_form('your_form_id');

Does that work?


I had the same trouble with the checkboxes element I wanted to render in a table. I found your answer a little bit to late.

So for all other searching how to render a checkboxes element with drupal_render and 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']));


I might add, that in D6 you need to add #parents => array() to the radios element. if no, expand_radios will throw an error, in my case. Drupal 6.22

0

精彩评论

暂无评论...
验证码 换一张
取 消