나는 동일한 문제가있었습니다. drupal-directory/modules/menu/menu.admin.inc에서 해결책을 찾았습니다. Form-API와 Themes는 오직 사용됩니다!
구현 : $ 양식 [: 계획-API를 기입의 쿼리는 다음과 같이 양식을 만들 각 행를 위해 본 (난 당신이 테마 ('테이블', ...) 이미 그것을했다고 생각) $ row-> id] [ 'column_name_1'] = array (... 여기 열의 설명 -> checkbox, textfield ...); $ form [$ row-> id] [ 'column_name_2'] = 배열 (...); - 자신의 테마를 사용하여 funktion을 사용합니다. 마녀가 hook_theme_table을 사용합니다. 이미 완료 했으므로 일부 셀을 확인란이나 다른 폼 요소로 변경하면됩니다.
제출 기능을 지금 쓰지 만 않습니다. 't work :-) 자세한 내용은 menu-modul을 참조하십시오.
하이어 내 코드 :
/**
* Form for editing the event types.
*
* @ingroup forms
*/
function mymodule_event_type_overview_form() {
$vid = variable_get('mymodule_category_vocabulary', '');
$sql = "SELECT term_data.tid AS tid,
term_data.name AS tname,
term_data.vid AS vid,
term_site_config.color AS color,
term_site_config.site_enabled AS site_enabled,
term_site_config.site_shown AS site_shown
FROM {term_data} term_data
INNER JOIN {term_site_config} term_site_config
ON term_data.tid = term_site_config.tid
WHERE term_data.vid = %d";
$result = db_query(db_rewrite_sql($sql), $vid);
$form = array(); while ($term = db_fetch_object($result)) {
$form[$term->tid]['tname'] = array(
'#type' => 'value',
'#value' => $term->tname,
);
$form[$term->tid]['color'] = array(
'#type' => 'value',
'#value' => $term->color,
);
$form[$term->tid]['enabled'] = array(
'#type' => 'checkbox',
'#default_value' => $term->site_enabled,
);
$form[$term->tid]['shown'] = array(
'#type' => 'checkbox',
'#default_value' => $term->site_shown,
);
// Build a list of operations.
$operations = array();
$operations['delete'] = l(t('delete'), 'admin/settings/mymodule/eventtype/'. $term->tid .'/delete');
$operations['edit'] = l(t('edit'), 'admin/settings/mymodule/eventtype/'. $term->tid .'/edit');
$form[$term->tid]['operations'] = array();
foreach ($operations as $op => $value) {
$form[$term->tid]['operations'][$op] = array('#value' => $value);
} }
if (element_children($form)) {
$form['submit'] = array(
'#type' => 'submit',
'#value' => t('Save configuration'),
);
$form['reset'] = array(
'#type' => 'submit',
'#value' => t('Reset to defaults'),
);
if (!empty($_POST) && form_get_errors()) {
drupal_set_message(t('The settings have not been saved because of the errors.'), 'error');
} }else {
$form['empty'] = array('#value' => t('There are no event types yet.')); }
return $form; }
/**
* Theme the event type overview form into a table.
*
* @ingroup themeable
*/
function theme_mymodule_event_type_overview_form($form) {
$header = array(
t('Event type'),
t('Color'),
array('data' => t('Enabled'), 'class' => 'checkbox'),
array('data' => t('Shown'), 'class' => 'checkbox'),
array('data' => t('Operations'), 'colspan' => '2'), );
$rows = array(); foreach (element_children($form) as $id) {
$element = &$form[$id];
if (isset($element['tname'])) {
$row = array(
t($element['tname']['#value']),
t($element['color']['#value']),
array('data' => drupal_render($element['enabled']), 'class' => 'checkbox'),
array('data' => drupal_render($element['shown']), 'class' => 'checkbox'),
array('data' => drupal_render($element['operations']['delete'])),
array('data' => drupal_render($element['operations']['edit'])),
);
$rows[] = $row; } } $output = ''; if ($rows) {
$output .= theme('table', $header, $rows); }
$output .= drupal_render($form);
return $output;
} hook_theme의
You will get the html-code of the form if you call drupal_get_form('mymodule_event_type_overview_form');
and don't forget co write following function in mymodule.module:
/** * 구현(). */mymodule_theme 함수() {
창 어레이 ( 'mymodule_event_type_overview_form'=> 어레이 ( '인자'=> 어레이()를 ) ); }
재미 :-) 카차에게 답장을 보내
감사를 가지고 있지만 정말 도움이되지 않습니다. 나는 드루팔 (Drupal)에 익숙하지 않기 때문에 문서에 대한 링크 이상의 도움이 필요하다. 몇 가지 기본 단계와 의사 코드로 어떤 의미인지 설명해 주시겠습니까? 감사! – codecowboy