nsbucky / gridview
从数组生成表格的简单方法
1.0
2014-06-01 14:58 UTC
Requires
- php: >=5.3.0
This package is auto-updated.
Last update: 2024-09-18 16:38:07 UTC
README
受到Yii的CGridView的启发,这个类旨在成为从数组生成表格的简单方法,即数据库结果集。它基于数组数组或对象数组。您可以选择显示哪些数组列或对象属性。它不会重写查询或处理分页,这由您自己决定。
特性
- 可配置的标题
- 生成排序URL
- 默认使用Bootstrap表格CSS
- 提供的列类型可加快开发速度
- 表格实现ArrayAccess以简化表格构建。
列类型
GridView提供了一些不同的列类型,用于计算或显示特定数据类型。
- 列:默认列类型,支持可见性、自定义标题和过滤器
- CalcColumn:传入一个闭包以执行计算
- CheckBoxColumn:在表格单元格中生成复选框
- DateTimeColumn:使用PHP的DateTime对象格式化日期字符串
- LinkColumn:生成锚点标签
- TotalColumn:计算列并在表格页脚中放置总计
- ButtonColumn:用于查看/编辑/删除等操作。附带示例按钮
所需设置
在composer.json
文件的require
键中添加以下内容
"nsbucky/gridview": "dev-master"
快速示例
$dataSource = array();
for($i=0; $i<10; $i++) {
$dataSource[] = array(
'uniqid'=>uniqid(),
'loop_iterator'=>$i.' times',
'date'=>date('Y-m-d'),
'total'=>rand(1,25)
);
}
$table = new GridView\Table($dataSource);
echo $table; // renders table based on results
$table = new GridView\Table($dataSource);
$table->addViewButton('view/{uniqid}')
->addEditButton('edit/me')
->addDeleteButton('delete/it');
echo $table; // will render table based on results with some buttons in last column
// in a list view
$table = new GridView\TableList($dataSource[0]);
echo $table; // will render a 2 column table with the column headers on left
更长的示例
$dataSource = array();
for($i=0; $i<10; $i++) {
$dataSource[] = array(
'uniqid'=>uniqid(),
'loop_iterator'=>$i.' times',
'date'=>date('Y-m-d'),
'total'=>rand(1,25)
);
}
$table = new GridView\Table($dataSource);
$table->addColumn(
array('name'=>'uniqid') // defaults to GridView\Columns\Column
)
->addColumn(
new GridView\Columns\LinkColumn(array(
'url'=>'/link/to/date/{date}',
'label'=>'Date Link'
))
)
->addColumn(
new GridView\Columns\Column(array(
'name'=>'total',
'value'=>function($data, $index) {
return $data['total']. ' dinosaurs were eaten today'
}
))
)
->addColumn(
new GridView\Columns\DateTimeColumn(array(
'name'=>'date',
'visible'=> (date('j') % 2)
))
);
// or via array access
$table[] = array('name'=>'loop_iterator');
$table[] = new GridView\Columns\ButtonColumn(array(
'buttons'=>array(
new GridView\Buttons\ViewButton('/view'),
new GridView\Buttons\EditButton('/edit'),
new GridView\Buttons\DeleteButton('/delete'),
)
));
echo (string) $table; // renders table