jurasm2 / datagrid
此包最新版本(dev-master)没有可用的许可信息。
官方 Bubo CMS DataGrid
dev-master
2015-03-15 12:59 UTC
Requires
- php: >=5.3.0
- nette/nette: ~2.3.0
This package is not auto-updated.
Last update: 2024-09-24 02:03:40 UTC
README
#什么是 DataGrid
DataGrid 控件是一个数据绑定列表控件,它以表格形式显示数据源中的项目。DataGrid 控件允许您选择、排序和管理这些项目。
这是开发版本,它可能包含错误,因此不适用于生产使用。
请注意,事物仍在开发中。
欢迎提出改进建议。
##基本用法:需要提供 DataGrid 的列名与实体列之间的映射。这允许内部组件(例如排序、过滤)正常工作。
####Doctrine 2 ######Doctrine 2 ORM - QueryBuilder
$grid = new \DataGrid\DataGrid;
//prepare datasource
$dataSource = new \DataGrid\DataSources\Doctrine\QueryBuilder(
$em->createQueryBuilder() //$em instanceof Doctrine\ORM\EntityManager
->select('u.id, u.name, u.email, u.regTime, a.city, a.street') //columns to be used
->from('Models\User', 'u') //master table
->join('u.address', 'a') //joined table (one-to-one association)
);
//provide mapping betweeen DataGrid's column names and entity columns
$dataSource->setMapping(array(
'id' => 'u.id',
'name' => 'u.name',
'email' => 'u.email',
'time' => 'u.regTime',
'city' => 'a.city',
'street' => 'a.street',
));
//finally, set datasource to DataGrid
$grid->setDataSource($dataSource);
//now we're working with mapped fields
$grid->addNumericColumn('id', 'ID')->addFilter();
$grid->addColumn('name', 'Jméno')->addFilter();
$grid->addColumn('email', 'Email')->addFilter();
$grid->addColumn('city', 'Město')->addFilter();
$grid->addColumn('street', 'Ulice')->addFilter();
$grid->addDateColumn('time', 'Datum registrace')->addDateFilter();
####Dibi #####DibiFluent
// Create a query
$df = new \DibiFluent(\dibi::getConnection());
$df->select('p.*')
->select('c.name')->as('city')
->from('%n', 'people', 'p')
->leftJoin('%n', 'cities', 'c')
->on('(p.[city_id] = c.[id])');
// Configure data source
$dataSource = new \DataGrid\DataSources\Dibi\Fluent($df);
$dataSource->setMapping(array(
'id' => 'p.ID',
'name' => 'p.name',
'mail' => 'p.mail',
'city' => 'c.name',
'registered' => 'p.registered',
));
// Configure data grid
$grid = new \DataGrid\DataGrid;
$grid->setDataSource($dataSource);
// Configure columns
$grid->addNumericColumn('id', 'ID')->addFilter();
$grid->addColumn('name', 'Jméno')->addFilter();
$grid->addColumn('mail', 'E-mail')->addFilter();
$grid->addColumn('city', 'Město')->addFilter();
$grid->addDateColumn('date', 'Registrován')->addFilter();
#####DibiDataSource
// Create a query
$ds = \dibi::dataSource('SELECT p.*, c.[name] as city FROM [people] p LEFT JOIN [cities] c ON p.[city_id] = c.[id]');
// Create a data source
$dataSource = new \DataGrid\DataSources\Dibi\DataSource($ds);
// Configure data grid
$grid = new DataGrid;
$grid->setDataSource($dataSource);
// Configure columns
$grid->addNumericColumn('id', 'ID')->addFilter();
$grid->addColumn('name', 'Jméno')->addFilter();
$grid->addColumn('mail', 'E-mail')->addFilter();
$grid->addColumn('city', 'Město')->addFilter();
$grid->addDateColumn('registered', 'Registrován')->addFilter();
####PHP 数组
TODO
##待办事项
####高优先级
- Latte 渲染器
####低优先级
- PHP 数组包装器(数据源)
- 选择框格式化