演示 / 网格
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-03-31
有问题? 在问题跟踪器中提问.
屏幕截图
目录
功能
- 灵活的组件架构
- 可以与各种数据源一起使用(PHP 数组、PDO 数据库连接、Laravel ActiveRecord 或 QueryBuilder、Doctrine DBAL 查询构建器等)
- 主题/自定义/样式
- 可以与任何 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”来安装供应商。Composer将自动运行'post-create-project-cmd'命令,这将调用交互式安装。
如果您想使用默认设置并静默运行,只需添加--no-interaction
选项。
如果您已经克隆了此仓库,或者想重新安装包,请导航到包文件夹并运行不带包名称的composer create-project
命令。
如果您确定不需要重新安装composer依赖项,您只需执行捆绑的安装器:composer run post-create-project-cmd
此类安装有额外的需求
- ext-curl
- ext-pdo_sqlite
集成
区域 | 框架 | 组件 | 包 | 状态 |
---|---|---|---|---|
后端 | Laravel(Eloquent) | Eloquent数据提供程序 | view-components/eloquent-data-processing | 准备就绪,稳定 |
后端 | Laravel(Blade) | Blade渲染器 | 计划中 | |
后端 | Symfony(Twig) | Twig渲染器 | 计划中 | |
后端 | Zend Framework 2/3 | * | 计划中 | |
后端 | Yii 2 | * | 计划中 | |
后端 | Doctrine(DBAL) | Doctrine(DBAL)数据提供程序 | view-components/doctrine-dbal-processing | 准备就绪,Beta |
后端 | 任何 | PHP数组数据提供程序 | 捆绑 | 准备就绪,不稳定 |
后端 | 任何 | PDO数据提供程序 | 捆绑 | 准备就绪,不稳定 |
前端 | Twitter Bootstrap | Bootstrap视图定制 | 捆绑 | 准备就绪,Beta |
前端 | Foundation by ZURB | Foundation视图定制 | 捆绑 | 准备就绪,不稳定 |
前端 | Semantic UI | Semantic UI视图定制 | 捆绑 | 准备就绪,不稳定 |
前端 | Yahoo Pure | Yahoo Pure视图定制 | 计划中 | |
前端 | UIKit | UIKit视图定制 | 计划中 |
用法
基本示例
$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许可证。
请参阅许可文件以获取更多信息。