theme_table

1 篇文章 / 0 new
author
theme_table
使用格式 $table = theme('table', array(
        'header' => array(), // 欄位標題
        'rows' => array(), //資料集
        'caption' => t('表格抬頭標題'),
        'attributes' => array('style' => 'width: 80%'), //table 屬性如 class, align...
        'colgroups' => ,
        'sticky' => ,
        'empty' => t('無資料'), //無資料時呈現文字
    )
);
header 相關參數資料
$header = array(
    columnKey => array(
        'data' => t('欄位標題名稱'),
        'field'=>'資料表欄位名稱, ex: n.changed', 使用欄位排序時需指定
        'sort'=>'該欄位預設排序模式, ex: desc 或 asc',
        'key'=> 'value', //可加入任意個html 屬性資料, Ex 'style'=>'width:70px', 'class'=>'sss'
    ),
);
rows 相關參數
$rows[] = array( //單列每個 col 資料結構
    columnKey => array( //col data
        'data' => '欄位資料',
        'key'=> 'value', //可加入任意個 <td> 屬性資料, Ex 'rowspan' => 2, 'bgcolor' => '#ffccff'
        "no_striping" = FALSE, //不使用 奇偶數行識別 class, default=FALSE
    ),
    key => array(...), //col data
);
header 與 row.col 是以 columnKey 值作對應, 若無指定key值等同一陣列內容順序帶入(因header,rows 的columnKey=0,1,2...)
http://drupalcontrib.org/api/drupal/drupal!includes!theme.inc/function/t...

基本用法
function myTable01() {
    // 表格標題資料
    $header = array(
        array('data' => t('標題 1')),
        array('data' => t('標題 2')),
        array('data' => t('標題 3'))
    );
    // 列資料
    $rows = array();
    $rows[] = array(//單一列
            array('data' => t("Row &ndash; Col 1")), //欄位 1
            array('data' => t("Row &ndash; Col 2")), //欄位 2
            array('data' => t("Row - Col 3"),  'rowspan' => 2, 'bgcolor' => '#ffccff',), //欄位 3
        );
    $rows[] = array(//單一列
            array('data' => t("Row - Col 1")), //欄位 1
            array('data' => t("Row - Col 2")), //欄位 2
        );
    for ($row = 1; $row < 3; $row++) {
        $rows[] = array(//單一列
            array('data' => t("Row $row &ndash; Col 1")), //欄位 1
            array('data' => t("Row $row &ndash; Col 2")), //欄位 2
            array('data' => t("Row $row &ndash; Col 3")), //欄位 3
        );
    }
    $rows[] = array(//單一列
        array('data' => t("Row $row &ndash; Col 1")), //欄位 1
        array(
            'data' => t("Row $row &ndash; Col 2"),
            'colspan' => 2,
            'align' => 'center',
            'bgcolor' => '#ffccff',
        ), //欄位 2
    );
    return theme('table', array('header' => $header, 'rows' => $rows));
}
範例一
function myTable02() {
    $header = array(//標題
        array('data' => t('Title')),
        array('data' => '', 'style' => 'width: 70px'),// 增加屬性資料
    );
    //get  data
    $query = db_select('node', 'n')
            ->fields('n', array('nid', 'title'))
            ->execute()
            ->fetchAll();
    foreach ($query as $record_edit_table) { //dataSet
        $rows[] = array(// celles       
            array(//本文連結
                'data' => l($record_edit_table->title, 'node/' . $record_edit_table->nid, array('attributes'=>array('target'=>'_blank')) ),
            ),
            array(//編輯
                'data' => l(t('edit'), 'node/' . $record_edit_table->nid . '/edit') . ' / ' . l(t('delete'), 'node/' . $record_edit_table->nid . '/delete'),
            ),
        );
    }
    $table = theme('table', array(
            'header' => $header, // 欄位標題
            'rows' => $rows, //資料集
            'caption' => t('資料編輯表格'), //表格抬頭標題
        )
    );
    return $table;
}
分頁與欄位排序
function myTable03() {
    $header = array(
        array('data' => t('Title'), 'field'=>'n.title'), //使用 TableSort 必須指定 field 資料
        array('data' => t('Update'), 'field'=>'n.changed', 'style'=>'width: 70px'),
    );
    // get data
    $query = db_select('node', 'n')->fields('n', array('nid', 'title', 'changed'))
            //分頁, limit 需在 extend('PagerDefault') 之後才可使用
            ->extend('PagerDefault')->limit(4)
            //欄位排序, orderByHeader 需在 extend('TableSort') 之後才可使用
            ->extend('TableSort')->orderByHeader($header);
    $dataSet = $query->execute()->fetchAll();
    foreach ($dataSet as $record_edit_table) {// dataSet
        $rows[] = array(// celles       
            array( 'data' => l($record_edit_table->title, 'node/' . $record_edit_table->nid), ),
            array( 'data' => $record_edit_table->changed, ),
        );
    }
    $editTable = theme('table', array(
        'header' => $header, // 欄位標題
        'rows' => $rows, //資料集
        'caption' => '表格 分頁與欄位排序',
            )
    );
    return $editTable . theme('pager');//加入頁次選單
}
Free Web Hosting