Revision: 4141
Updated Code
at October 28, 2007 15:19 by WimLeers
Updated Code
/** * Themeing function to render a form as a table. * * The $form array should contain the following: * - $form['heading'], a form item of the default (markup) type (thus with * only #value set), containing an (optional) heading. * - $form['header'], an array of form items of the default (markup) type * (thus with only #value set), containing the header fields * - $form['rows'], an array of form items containing the rows. Each row is * again an array of form items. * - $form['empty'], if this is set, then no table will be rendered. You may * want to put an "empty message" in here. * * When $form['empty'] is not set, a table will be rendered first. After that, * all other form items will get rendered. * If $form['empty'] is set, $form['header'] and $form['rows] will be deleted, * and then all other form items will get rendered. */ function theme_mymodule_table_form($form) { $output = ''; $header = array(); $rows = array(); // We always want the heading to be rendered first. $output .= drupal_render($form['heading']); if (!$form['empty']) { // Render $form['header'] as the header of the table. foreach ($form['header'] as $field) { $header[]['data'] = $field['#value']; } unset($form['header']); // Render $form['rows'] as the rows of the table. foreach (element_children($form['rows']) as $i) { $row = array(); foreach (element_children($form['rows'][$i]) as $key) { $row[]['data'] = drupal_render($form['rows'][$i][$key]); } $rows[] = $row; } // Render the table. $output .= theme('table', $header, $rows, array('width' => '100%')); } else { // Delete the header and rows, just to be sure. unset($form['header']); unset($form['rows']); // Render the empty message. $output .= drupal_render($form['empty']); } // Render the remaining form items. $output .= drupal_render($form); return $output; }
Revision: 4140
Initial Code
Initial URL
Initial Description
Initial Title
Initial Tags
Initial Language
at October 28, 2007 15:18 by WimLeers
Initial Code
/** * Themeing function to render a form as a table. * * The $form array should contain the following: * - $form['heading'], a form item of the default (markup) type (thus with * only #value set), containing an (optional) heading. * - $form['header'], an array of form items of the default (markup) type * (thus with only #value set), containing the header fields * - $form['rows'], an array of form items containing the rows. Each row is * again an array of form items. * - $form['empty'], if this is set, then no table will be rendered. You may * want to put an "empty message" in here. * * When $form['empty'] is not set, a table will be rendered first. After that, * all other form items will get rendered. * If $form['empty'] is set, $form['header'] and $form['rows] will be deleted, * and then all other form items will get rendered. */ function theme_eightye_table_form($form) { $output = ''; $header = array(); $rows = array(); // We always want the heading to be rendered first. $output .= drupal_render($form['heading']); if (!$form['empty']) { // Render $form['header'] as the header of the table. foreach ($form['header'] as $field) { $header[]['data'] = $field['#value']; } unset($form['header']); // Render $form['rows'] as the rows of the table. foreach (element_children($form['rows']) as $i) { $row = array(); foreach (element_children($form['rows'][$i]) as $key) { $row[]['data'] = drupal_render($form['rows'][$i][$key]); } $rows[] = $row; } // Render the table. $output .= theme('table', $header, $rows, array('width' => '100%')); } else { // Delete the header and rows, just to be sure. unset($form['header']); unset($form['rows']); // Render the empty message. $output .= drupal_render($form['empty']); } // Render the remaining form items. $output .= drupal_render($form); return $output; }
Initial URL
Initial Description
Initial Title
table form themeing function
Initial Tags
textmate, drupal
Initial Language
PHP