CodeIgniter 用户指南 版本 2.0.0

PHP100中文网
查看原文

HTML 表格类

表格类提供允许你从数组或数据库查询结果集中自动生成HTML表格

初始化类

像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);

注意:  在这个模板,你会发现这里有两个"row"块设置项。 这是允许你创建隔行颜色,或者设计每行数据的重复间隔元素。

你不必提交全部的模板。如果你只想改变编排的一部分,你可以简单地提交那部分的元素。在这个例子里,只有表格的开始标签被更改:

$tmpl = array ( 'table_open'  => '<table border="1" cellpadding="2" cellspacing="1" class="mytable">' );

$this->table->set_template($tmpl);

Function Reference

$this->table->generate()

返回一个包含生成的表格的字符串。 接受一个可选的参数,该参数可以是一个数组或是从数据库获取的对象。

$this->table->set_caption()

允许你给表格添加一个标题

$this->table->set_caption('Colors');

$this->table->set_heading()

允许你设置表格的表头。你可以提交一个数组或分开的参数:

$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'));

If you would like to set an individual cell's tag attributes, you can use an associative array for that cell. The associative key 'data' defines the cell's data. Any other key => val pairs are added as key='val' attributes to the tag:

$cell = array('data' => 'Blue', 'class' => 'highlight', 'colspan' => 2);
$this->table->add_row($cell, 'Red', 'Green');

// generates
// <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);

// Generates a table with this prototype

<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>

$this->table->set_template()

允许你设置你的模板。你可以提交整个模板或局部模板。

$tmpl = array ( 'table_open'  => '<table border="1" cellpadding="2" cellspacing="1" class="mytable">' );

$this->table->set_template($tmpl);

$this->table->set_empty()

使你能设置一个默认值,用来显示在表格中内容为空的单元格。 例如,你可以设置一个non-breaking space(用来防止表格边框破损的空格):

$this->table->set_empty("&nbsp;");

$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

Allows you to specify a native PHP function or a valid function array object to be applied to all cell data.

$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();

In the above example, all cell data would be ran through PHP's htmlspecialchars() function, resulting in:

<td>Fred</td><td>&lt;strong&gt;Blue&lt;/strong&gt;</td><td>Small</td>

 

翻译贡献者: architectcom, bnlt, Hex, KilluaVX, tanqimin, Xwoder
最后修改: 2011-02-01 02:02:05