Почему drupal_render ($ form) неправильно отображает RADIOS #type? - PullRequest
1 голос
/ 02 февраля 2011

Я пытаюсь использовать 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>
// "

Кто-нибудь знает, в чем проблема и как исправить / обойти?
Есть ли какие-либо проблемы с рендерингом радиоприемников или чем-то еще?

Спасибо!

Ответы [ 5 ]

3 голосов
/ 16 августа 2013

Для D7 используйте form_process_checkboxes ()

3 голосов
/ 03 февраля 2011

Вы не можете отображать элементы формы без формы, потому что у элемента radios есть обратный вызов процесса form_process_radios (), который вызывается только при использовании с API формы.

Возможно, вы сможете что-то попробоватькак:

$form['radiosinput'] = expand_radios($form['radiosinput']);
return drupal_render($form);
0 голосов
/ 05 августа 2011

Могу добавить, что в D6 вам нужно добавить #parents => array () к элементу radios. если нет, expand_radios выдаст ошибку, в моем случае. Drupal 6,22

0 голосов
/ 17 мая 2011

У меня была такая же проблема с элементом checkboxes, который я хотел отобразить в таблице.Я нашел ваш ответ немного поздно.

Так что для всех остальных поисков, как визуализировать элемент флажков с 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']));
0 голосов
/ 02 февраля 2011

Я работал над чем-то похожим час назад.Ваш код, вставленный в мою форму, работает просто отлично.

Попробуйте

drupal_get_form ('your_form_id');

Это работает?

...