view-components/grids
适用于PHP的灵活且框架无关的数据网格
Requires
- php: ^5.5||^7||^8
- nayjest/tree: ^3
- view-components/view-components: ^0.25||^0.26.6
Requires (Dev)
- view-components/testing-helpers: ^2.0.1
README
适用于PHP的灵活且框架无关的数据网格
本项目是nayjest/grids(Laravel的数据网格框架)的后继项目。
该包在后端和前端框架方面都是框架无关的,即
- 你可以用它与任何PHP框架或没有框架一起使用。集成包可以帮助你使用流行的PHP框架的功能。
- 不用担心将标记与您喜欢的CSS框架匹配。只需描述网格结构和添加可用的自定义之一,这将应用特定于框架的修改到标记。
项目状态:beta 自2016年3月31日起
有问题吗? 在问题跟踪器中提问.
屏幕截图
目录
功能
- 灵活的组件架构
- 可以与多种数据源一起使用(PHP数组、PDO数据库连接、Laravel ActiveRecord或QueryBuilder、Doctrine DBAL Query builder等)
- 主题/自定义/样式
- 可以与任何PHP框架一起使用,并为流行的框架提供了集成包。
- 不用担心将标记与您喜欢的CSS框架匹配。只需描述网格结构和组件,然后应用自定义。本包在前端框架方面是框架无关的,并附带Twitter Bootstrap、Foundation、Semantic UI等主题
- 提供了许多可用的组件:过滤器、排序、总计、行详情、分页、CSV导出
- 对开发者友好(文档正在编写中)
要求
- PHP 5.5+(支持hhvm & php7)
安装
在现有项目中安装
推荐通过Composer安装组件。
从您的项目文件夹运行以下命令
composer require view-components/grids
附加组件
如果您使用Laravel,请安装eloquent-data-processing包。
composer require view-components/eloquent-data-processing
这将使您可以使用Eloquent模型和查询构建实例作为网格的数据源。
对于Doctrine用户,有doctrine-data-processing包可用。
composer require view-components/doctrine-data-processing
作为独立项目安装
要在您的系统上运行与该包捆绑的测试和演示应用,您需要将其作为独立项目安装。
composer create-project view-components/grids
这相当于执行git clone,然后执行“composer install” vendors。Composer将自动运行'post-create-project-cmd'命令,这将调用交互式安装。
如果您想使用默认设置并静默运行,请添加--no-interaction
选项。
如果您已克隆此存储库或您想重新安装包,请转到包文件夹并运行不带指定包名的composer create-project
命令。
如果您确定不需要重新安装composer依赖项,则可以仅执行捆绑的安装程序:composer run post-create-project-cmd
此类安装有额外的要求
- ext-curl
- ext-pdo_sqlite
集成
使用
基本示例
$provider = new DbTableDataProvider($pdoConnection, 'my_table'); $input = new InputSource($_GET); // create grid $grid = new Grid( $provider, // all components are optional, you can specify only columns [ new TableCaption('My Grid'), new Column('id'), new Column('name'), new Column('role'), new Column('birthday'), (new Column('age')) ->setValueCalculator(function ($row) { return DateTime ::createFromFormat('Y-m-d', $row->birthday) ->diff(new DateTime('now')) ->y; }) ->setValueFormatter(function ($val) { return "$val years"; }) , new DetailsRow(new SymfonyVarDump()), // when clicking on data rows, details will be shown new PaginationControl($input->option('page', 1), 5), // 1 - default page, 5 -- page size new PageSizeSelectControl($input->option('page_size', 5), [2, 5, 10]), // allows to select page size new ColumnSortingControl('id', $input->option('sort')), new ColumnSortingControl('birthday', $input->option('sort')), new FilterControl('name', FilterOperation::OPERATOR_LIKE, $input->option('name')), new CsvExport($input->option('csv')), // yep, that's so simple, you have CSV export now new PageTotalsRow([ 'id' => PageTotalsRow::OPERATION_IGNORE, 'age' => PageTotalsRow::OPERATION_AVG ]) ] ); // now you can render it: echo $grid->render(); // or even this way: echo $grid; // but also you can add some styling: $customization = new BootstrapStyling(); $customization->apply($grid); echo $grid;
演示应用
此软件包包含示例应用程序。
示例代码的源代码在此处可用:这里
部署到Heroku的运行演示应用
Travis CI会自动将包含此软件包的Web应用程序部署到Heroku。
您在这里可以看到工作示例: http://vc-grids.herokuapp.com/
首次运行可能较慢,因为Heroku在无流量时会关闭工作进程,并在首次访问时重新启动。
本地运行演示应用
要在本地运行它,您必须将此软件包作为独立项目安装,并包含开发依赖项。
然后,使用以下命令从软件包目录运行Web服务器:
composer serve
此命令使用PHP捆绑的Web服务器。
现在,在浏览器中打开http://localhost:8000(对于Windows用户,启动Web服务器后,它将自动打开)。
文档
测试
此应用程序包含使用PHPUnit创建的单元和验收测试。
要在本地运行测试,您必须将此软件包作为独立项目安装,并包含开发依赖项。
运行单元和验收测试的命令
composer test
检查代码样式的命令
composer cs
贡献
安全
如果您发现任何与安全相关的问题,请通过电子邮件mail@vitaliy.in联系,而不是使用问题跟踪器。
许可
© 2015—2016 Vitalii Stepanenko
许可协议:MIT许可。
有关更多信息,请参阅许可文件。