rollerworks/datagrid

此包已被废弃,不再维护。没有建议的替代包。

具有模块化设计和可定制的 Datagrid 系统

v0.11.1 2017-03-14 16:30 UTC

README

RollerworksDatagrid 为您的 PHP 应用程序提供了一个强大的 Datagrid 系统。

在 Web 应用程序中,显示对象列表是最常见的任务之一,也可能是最容易的任务。那么这个库如何帮助您呢?

datagrid 系统使得数据的样式化和转换更加统一,使用更加方便。其次,该系统可以处理特定的(样式)问题,如排序和分页。所有这些都不需要复制代码或降低性能。

功能

RollerworksDatagrid 提供您所需的所有功能,包括

  • 用于在 datagrid 中进行统一数据转换和样式的先进列类型系统。
  • 自动将数据映射到 datagrid。
  • 支持任何数据源(PHP 数组或实现 \Traversable 的任何对象)。
  • (可选,即将推出)使用 RollerworksSearch 进行搜索/筛选。
  • (可选,即将推出)使用 Pagerfanta 进行集成分页。

注意:由于实现了 IteratorAggregate,将 Pagerfanta 对象作为数据源传递已经工作。但是,集成桥梁将使渲染更加统一。

框架集成

RollerworksDatagrid 可以与您选择的任何框架一起使用,但为了获得最佳体验,请使用提供的框架集成插件。

  • Symfony Bundle
  • ZendFramework2 插件(即将推出)
  • Silex 插件(即将推出)

您的框架不在列表中?没问题,请参阅[贡献指南],了解您如何提供帮助!

安装和用法

如果您的使用框架集成,请忽略下面的说明。[阅读 master 的文档] 以获取完整说明和信息。

使用 [Composer] 安装 RollerworksDatagrid "核心" 库

$ composer install rollerworks/datagrid

然后创建 DatagridFactory 以开始

use Rollerworks\Component\Datagrid\Datagrids;
use Rollerworks\Component\Datagrid\Extension\Core\Type as ColumnType;

$datagridFactory = Datagrids::createDatagridFactory();

$datagrid = $datagridFactory->createDatagridBuilder()
   ->add('id', ColumnType\NumberType::class)
   ->add('username', ColumnType\TextType::class)
   ->add('registered_on', ColumnType\DateTimeType::class)
   ->add('enabled', ColumnType\BooleanType::class, ['true_value' => 'Yes', 'false_value' => 'No'])
   ->getDatagrid('users_datagrid')
;

// Now set the data for the grid, this cannot be changed afterwards.
$datagrid->setData([
    ['id' => 1, 'username' => 'sstok', 'registered_on' => new \DateTime('2017-01-12 14:26:00 CET'), 'enabled' => true], 
    ['id' => 2, 'username' => 'doctorw', 'registered_on' => new \DateTime('1980-04-12 09:26:00 CET'), 'enabled' => false], 
    // etc...
]);

// Almost done, the datagrid needs to be rendered, see bellow.

渲染

然而,核心包不提供此实现的实现,您可以使用任何兼容的模板引擎。

此示例使用 TwigRendererEngine(需要单独安装)。

use Rollerworks\Component\Datagrid\Twig\Extension\DatagridExtension;
use Rollerworks\Component\Datagrid\Twig\Renderer\TwigRenderer;
use Rollerworks\Component\Datagrid\Twig\Renderer\TwigRendererEngine;

// Provide the path to the base theme.
$loader = new \Twig_Loader_Filesystem([...]);

$environment = new \Twig_Environment($loader);
$environment->addExtension(new DatagridExtension());
$environment->addRuntimeLoader(new \Twig_FactoryRuntimeLoader([TwigRenderer::class => function () uses ($environment) {
    // The second argument are filenames of datagrid themes.
    $rendererEngine = new TwigRendererEngine($environment, ['datagrid.html.twig']);
    
    return new TwigRenderer($rendererEngine);
}]));

$environment->render('my_page.html.twig', ['datagrid' => $datagrid->createView()]);

然后在 my_page.html.twig twig 模板中简单使用

{{ rollerworks_datagrid(datagrid) }}

就是这样!您的 datagrid 现在已渲染,不仅如此!每次您使用像搜索这样的高级技术时,您只需要在模板中使用这么少的代码。

资源

RollerworksDatagrid 背后是谁?

RollerworksDatagrid 是由 Sebastiaan Stok 提供的。

许可协议

RollerworksDatagrid是在MIT许可协议下发布的。

类型和扩展在很大程度上受到Symfony表单组件的启发,并包含来自Symfony项目的大量代码。

支持

如果问题过于复杂,无法获得快速支持,请[加入聊天]或使用问题跟踪器。

注意:RollerworksDatagrid目前没有支持论坛,如果您知道一个不错的免费服务,请通过创建问题告诉我们👍

贡献

这是一个开源项目。如果您想贡献力量,请阅读[贡献指南]。如果您正在提交拉取请求,请遵循[提交补丁]部分中的指南。

加入聊天 https://gitter.im/rollerworks/datagrid [Composer]: https://getcomposer.org.cn/doc/00-intro.md [贡献指南]: https://github.com/rollerworks/contributing [提交补丁]: https://contributing.readthedocs.org/en/latest/code/patches.html [阅读master版本的文档]: http://rollerworksdatagrid.readthedocs.org/en/latest/ [加入聊天]: https://gitter.im/rollerworks/datagrid