Как описать такую форму?
Таблицу отдельно вывести могу. Форму отдельно тоже.
А как их разместить в одном месте?
Вложение | Размер |
---|---|
snapshot6.png | 12.8 КБ |
Как описать такую форму?
Таблицу отдельно вывести могу. Форму отдельно тоже.
А как их разместить в одном месте?
Вложение | Размер |
---|---|
snapshot6.png | 12.8 КБ |
Комментарии
http://api.drupal.org/api/drupal/modules--user--user.admin.inc/function/...
Не совсем понятно где описана форма?
Она передаётся параметром в функцию?
Можно ещё пример с вызовом этой ф-ции, где ей передаётся форма?
Смысл в этой функции в том, что она перекрывает стандартный вывод формы и формирует html так, как нам надо
Допустим я описываю форму так.
$items['admin/journal-of-requests/data/request-types/add'] = array(
'title' => 'Редактирование типа заявки',
'page callback' => 'drupal_get_form',
'page arguments' => array('journal_of_requests_admin_new_req_type_form'),
'access arguments' => array('administer site configuration'),
'file' => 'journal_of_requests.admin.inc',
'type' => MENU_CALLBACK,
);
Сама форма
$form['req_type_name'] = array(
'#title' => 'Новый тип',
'#description' => 'Задайте тип заявки',
'#type' => 'textfield',
'#default_value' => '',
'#required' => true,
'#maxlenght' => 255,
'#size' => 40,
'#weight' => 1,
);
$form['submit'] = array(
'#type' => 'submit',
'#value' => 'Добавить',
'#weight' => 3,
);
return $form;
}
Ф-ция, которая рисует таблицу
'title' => 'Таблицы журнала заявок',
'description' => 'Здесь настраиваются таблицы.',
'page callback' => 'journal_of_requests_admin_form_request_types',
'access arguments' => array('administer site configuration'),
'weight' => -10,
'type' => MENU_NORMAL_ITEM,
'file' => 'journal_of_requests.admin.inc',
);
$items['admin/journal-of-requests/data/request-types'] = array(
'title' => 'Типы заявок',
'access arguments' => array('administer site configuration'),
'file' => 'journal_of_requests.admin.inc',
'weight' => -15,
'type' => MENU_DEFAULT_LOCAL_TASK,
);
$header = array('Вид заявки','Действие');
$rows = array();
$sql = "SELECT rt.rtid, rt.type FROM request_type AS rt ORDER BY rt.rtid";
$request_types = db_query($sql);
while ($req_type = db_fetch_object($request_types)) {
$actions = array (
l('редактировать', 'admin/journal-of-requests/data/request-types/edit/' . $req_type->rtid),
l('удалить', 'admin/journal-of-requests/data/request-types/delete/' . $req_type->rtid, array('query' => 'token=' . drupal_get_token('req-'.$req_type->rtid))),
);
$rows[] = array(
$req_type->type,
implode(' ', $actions),
);
}
$output = theme('table', $header, $rows);
return $output;
}
Как форму пропихнуть в таблицу?
Как я понял надо делать свой hook_theme()
Вот только непонятно надо ли там все формы перечислять?
Если мне нужно хитро выводить только одну.
можно использовать theme()
код с рабочего модуля:
<?php
$tree = taxonomy_get_tree($vocabulary->vid);
// Build the actual form.
$form[$key]['delete'] = array(
$form[$key]['rss'] = array(
$form[$key]['count'] = array(
$form[$key]['edit'] = array('#value' => l(t('edit'), "admin/content/taxonomy/edit/term/$term->tid", array('query' => drupal_get_destination())) );
$form['#empty_text'] = t('No terms available.');
$form['submit'] = array(
$errors = form_get_errors() != FALSE ? form_get_errors() : array();
$row = array();
$row = array('data' => $row);
$header = array(
function gs_form_tematiks(&$form_state) {
_nodes_no_terms_delete();
$vocabulary=taxonomy_vocabulary_load(1);
drupal_set_title(t('Tematiks'));
$form = array(
'#vocabulary' => (array)$vocabulary,
'#tree' => TRUE,
'#parent_fields' => FALSE,
);
foreach ($tree as $key => $term) {
// Save the term for the current page so we don't have to load it a second time.
$form[$key]['#term'] = (array)$term;
$form[$key]['view'] = array('#value' => l($term->name, "taxonomy/term/$term->tid"));
'#type' => 'checkbox',
'#default_value' => false,
);
'#type' => 'textfield',
'#default_value' => '',
'#size' => 20,
'#maxlength' => 200,
);
'#value' => taxonomy_term_count_nodes($term->tid,'gcontent'),
);
}
'#type' => 'submit',
'#value' => t('Done')
);
$form['#redirect']='task-load/page';
return
$form;}
function
theme_gs_form_tematiks($form){$rows = array();
foreach (element_children($form) as $key) {
if (isset($form[$key]['#term'])) {
$term = &$form[$key];
$row[] = drupal_render($term['view']);
$row[] = drupal_render($term['delete']);
$row[] = drupal_render($term['rss']);
$row[] = drupal_render($term['count']);
$row[] = drupal_render($term['edit']);
$rows[$key] = $row;
}
}
if (empty(
$rows)) {$rows[] = array(array('data' => $form['#empty_text'], 'colspan' => '2'));
}
t('Name'),
t('Delete'),
t('Load from RSS'),
t('Count'),
t('Operations'),
);
$output = theme('table', $header, $rows, array('id' => 'taxonomy'));
$output .= drupal_render($form);
return
$output;} ?>
смысл очень прост
в фунуции theme_gs_form_tematiks($form) формируется массив заголовков таблицы($header) и массив строк($rows)
которые передаются функции theme с первым параметром 'table' и на выходе получаем отформатированную таблицу.