rollerworks / datagrid
具有模块化设计和可定制的 Datagrid 系统
Requires
- php: ^7.0
- symfony/intl: ^3.2.6
- symfony/options-resolver: ^3.0
- symfony/property-access: ^3.0
Requires (Dev)
- sllh/php-cs-fixer-styleci-bridge: ^2.1
- symfony/phpunit-bridge: ^3.2.6
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 现在已渲染,不仅如此!每次您使用像搜索这样的高级技术时,您只需要在模板中使用这么少的代码。
资源
- [阅读 master 的文档]
- RollerworksDatagrid 依据 语义化版本控制指南 进行维护。
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