初始化類
像CodeIgniter的其它類一樣, 在控制器中使用$this->load->library 函數來初始化表格類:$this->load->library('table');
一旦被加載,可以這樣建立一個表格庫對象的實例: $this->table
此例演示如何通過一個多維數組(multi-dimensional array)自動生成表格。
注意:數組的第一個索引將成為表頭(或者你可以通過set_heading()函數自定義表頭)。
$this->load->library('table');$data = array( array('Name', 'Color', 'Size'), array('Fred', 'Blue', 'Small'), array('Mary', 'Red', 'Large'), array('John', 'Green', 'Medium') );echo $this->table->generate($data);
效果圖:
下面是一個由數據庫查詢結構創建而成的表格例子。
表格類會基于表格的名字自動地生成表格標題(參考下面記述的函數,你可以使用set_heading()函數設置你自己的標題)。
$this->load->library('table');$query = $this->db->query("SELECT * FROM my_table");echo $this->table->generate($query);
效果截圖:
$this->load->library('table');$this->table->set_heading('Name', 'Color', 'Size');$this->table->add_row('Fred', 'Blue', 'Small');$this->table->add_row('Mary', 'Red', 'Large');$this->table->add_row('John', 'Green', 'Medium');echo $this->table->generate();
$this->load->library('table');$this->table->set_heading(array('Name', 'Color', 'Size'));$this->table->add_row(array('Fred', 'Blue', 'Small'));$this->table->add_row(array('Mary', 'Red', 'Large'));$this->table->add_row(array('John', 'Green', 'Medium'));echo $this->table->generate();
$tmpl = array ( 'table_open' => '<table border="0" cellpadding="4" cellspacing="0">', 'heading_row_start' => '<tr>', 'heading_row_end' => '</tr>', 'heading_cell_start' => '<th>', 'heading_cell_end' => '</th>', 'row_start' => '<tr>', 'row_end' => '</tr>', 'cell_start' => '<td>', 'cell_end' => '</td>', 'row_alt_start' => '<tr>', 'row_alt_end' => '</tr>', 'cell_alt_start' => '<td>', 'cell_alt_end' => '</td>', 'table_close' => '</table>' );$this->table->set_template($tmpl);
$tmpl = array ( 'table_open' => '<table border="1" cellpadding="2" cellspacing="1" class="mytable">' );$this->table->set_template($tmpl);
函數參考:
$this->table->set_caption()
允許你給表格添加一個標題$this->table->set_caption('Colors');
$this->table->set_heading('Name', 'Color', 'Size');$this->table->set_heading(array('Name', 'Color', 'Size'));
$this->table->add_row()
允許你在你的表格中添加一行。你可以提交一個數組或分開的參數:$this->table->add_row('Blue', 'Red', 'Green');$this->table->add_row(array('Blue', 'Red', 'Green'));
如果你想要單獨設置一個單元格的屬性,你可以使用一個關聯數組。
關聯鍵名 'data' 定義了這個單元格的數據。
其它的鍵值對 key => val 將會以 key='val' 的形式被添加為該單元格的屬性:
$cell = array('data' => 'Blue', 'class' => 'highlight', 'colspan' => 2);$this->table->add_row($cell, 'Red', 'Green');// 生成// <td class='highlight' colspan='2'>Blue</td><td>Red</td><td>Green</td>
$this->table->make_columns()
這個函數以一個一維數組為輸入,創建一個二維數組,它的深度和列數一樣。這個函數可以把一個帶有多個元素的單一數組根據表格的列數進行整理并顯示。參考下面的例子:$list = array('one', 'two', 'three', 'four', 'five', 'six', 'seven', 'eight', 'nine', 'ten', 'eleven', 'twelve');$new_list = $this->table->make_columns($list, 3);$this->table->generate($new_list);生成的HTML代碼如下:
<table border="0" cellpadding="4" cellspacing="0"><tr><td>one</td><td>two</td><td>three</td></tr><tr><td>four</td><td>five</td><td>six</td></tr><tr><td>seven</td><td>eight</td><td>nine</td></tr><tr><td>ten</td><td>eleven</td><td>twelve</td></tr></table>
$tmpl = array ( 'table_open' => '<table border="1" cellpadding="2" cellspacing="1" class="mytable">' );$this->table->set_template($tmpl);$this->table->set_empty()
$this->table->set_empty(" ");$this->table->clear()
$this->load->library('table');$this->table->set_heading('Name', 'Color', 'Size');$this->table->add_row('Fred', 'Blue', 'Small');$this->table->add_row('Mary', 'Red', 'Large');$this->table->add_row('John', 'Green', 'Medium');echo $this->table->generate();$this->table->clear();$this->table->set_heading('Name', 'Day', 'Delivery');$this->table->add_row('Fred', 'Wednesday', 'Express');$this->table->add_row('Mary', 'Monday', 'Air');$this->table->add_row('John', 'Saturday', 'Overnight');echo $this->table->generate();$this->table->function
$this->load->library('table');$this->table->set_heading('Name', 'Color', 'Size');$this->table->add_row('Fred', '<strong>Blue</strong>', 'Small');$this->table->function = 'htmlspecialchars';echo $this->table->generate();
<td>Fred</td><td><strong>Blue</strong></td><td>Small</td>