У меня есть простой управляемый элемент формы файла, который является единственным элементом моей формы. Выглядит это так:
$form['upload'] = array(
'#type' => 'managed_file',
'#title' => t('Select a YML file'),
'#progress_message' => t('Please wait...'),
'#progress_indicator' => 'bar',
'#description' => t('Click "Browse..." to select a file to upload.'),
'#required' => TRUE,
'#upload_validators' => array('file_validate_extensions' => array('yml txt docx')),
'#upload_location' => $upload_dest,
);
Когда я визуализирую форму с помощью обратного вызова drupal_get_form в hook_menu, я получаю идеально сформированное поле загрузки managed_file с кнопками просмотра и загрузки. Все меняется, когда я решаю добавить таблицу с информацией под формой. Для этого необходимо создать таблицу с использованием функций темы, а затем добавить ее в форму путем визуализации формы и добавления таблицы. Я создаю свою таблицу и добавляю ее в форму:
$rows = array();
foreach($yml_files as $yml_file){
$rows[] = array($yml_file->uri, $yml_file->filename);
}
$output = drupal_render($form['upload']);
$output .= theme('table', array('header'=>$header, 'rows'=>$rows));
return $output;
Когда я генерирую форму с помощью drupal_render, я получаю красивый текст справки, но не форму для загрузки. Таблица отображается нормально в обоих сценариях, и я не вижу никаких ошибок.
Если Drupal использует drupal_render для рендеринга своих форм, почему форма будет выглядеть иначе во втором сценарии? Есть ли способ получить всю форму? Я пробовал различные способы передачи формы и использования dpm для печати формы на разных этапах, и я не уверен, что делать дальше.
Стандартные поля загрузки файлов отображаются правильно, как и другие элементы формы. Кажется, это ограничено элементом managed_file.