适用于PHP的灵活且框架无关的数据网格

v0.5.10 2021-07-06 16:23 UTC

README

Release Scrutinizer Code Quality Build Status Code Coverage

适用于PHP的灵活且框架无关的数据网格

本项目是nayjest/grids(Laravel的数据网格框架)的后继项目。

该包在后端和前端框架方面都是框架无关的,即

  • 你可以用它与任何PHP框架或没有框架一起使用。集成包可以帮助你使用流行的PHP框架的功能。
  • 不用担心将标记与您喜欢的CSS框架匹配。只需描述网格结构和添加可用的自定义之一,这将应用特定于框架的修改到标记。

项目状态:beta 自2016年3月31日起

有问题吗? 在问题跟踪器中提问.

屏幕截图

screenshot

目录

功能

  • 灵活的组件架构
  • 可以与多种数据源一起使用(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许可。

有关更多信息,请参阅许可文件