warslett / table-builder
表格抽象,表格构建,表格渲染
0.2.2
2022-04-18 14:34 UTC
Requires
- ext-json: *
- jawira/case-converter: ^3.4
- symfony/property-access: >4
Requires (Dev)
- ext-simplexml: *
- doctrine/orm: ^2.7
- infection/infection: ^0.20.2
- league/csv: ^9.6
- mockery/mockery: ^1.4
- phpunit/phpunit: ^9.4
- psr/http-message: ^1.0
- rregeer/phpunit-coverage-check: ^0.3.1
- squizlabs/php_codesniffer: ^3.5
- symfony/http-foundation: ^5.1
- symfony/routing: ^5.1
- twig/twig: ^3.1
- vimeo/psalm: ^4.1
This package is auto-updated.
Last update: 2024-09-18 20:23:09 UTC
README
表格构建器提供表格抽象、表格构建和表格渲染功能。允许您配置表格,将数据加载到其中,然后以多种方式渲染它们。该软件包可以帮助您实现CRUD应用程序中大多数表格操作的功能,包括分页、排序、行操作、条件格式化和将表格导出为csv。
安装
composer require warslett/table-builder
如果您使用symfony,有一个可选的包可以配置服务
composer require warslett/table-builder-bundle warslett/table-builder
要求
PHP 7.4、8.0或8.1。
文档
完整的文档可以在这里找到。
概述
表格构建
使用各种列类型配置您的表格,或实现您自己的列类型。然后使用我们的数据适配器之一加载数据到表格中,或实现您自己的。使用我们的请求适配器之一处理排序和分页的请求,或实现您自己的。
// Configure the table structure with a range of out the box column types $tableBuilder = $this->tableBuilderFactory->createTableBuilder() ->rowsPerPageOptions([10, 20, 50]) ->defaultRowsPerPage(10) ->add(TextColumn::withProperty('email') ->sortable()) ->add(DateTimeColumn::withProperty('last_login') ->format('Y-m-d H:i:s') ->sortable()) ->add(ActionGroupColumn::withName('actions') ->add(ActionBuilder::withName('update') ->route('user_update', ['id' => 'id'])) // map 'id' parameter to property path 'id' ->add(ActionBuilder::withName('delete') ->route('user_delete', ['id' => 'id']) ->attribute('extra_classes', ['btn-danger']))); // Build the table object $table = $tableBuilder->buildTable('users'); // Configure how data will be loaded into the table $queryBuilder = $this->entityManager->createQueryBuilder() ->select('u') ->from(User::class, 'u'); $dataAdapter = DoctrineOrmAdapter::withQueryBuilder($queryBuilder) ->mapSortToggle('email', 'u.email') ->mapSortToggle('last_login', 'u.lastLogin'); $table->setDataAdapter($dataAdapter); // Uses parameters on the request to load data into the table with sorting and pagination $table->handleSymfonyRequest($request); // OR with a Psr7 Request $table->handlePsr7Request($request);
表格渲染
以抽象方式建模表格,使我们能够提供多种通用的渲染器来渲染它们。
例如,注册了TwigRendererExtension后,您可以将表格在twig模板中渲染如下
<div class="container"> {{ table(table) }} </div>
或者如果您不使用twig,可以使用PhtmlRenderer,它使用普通的PHP模板,且没有第三方依赖
use WArslett\TableBuilder\Renderer\Html\PhtmlRenderer; $renderer = new PhtmlRenderer(); echo $renderer->renderTable($table);
上述两个渲染器都是可主题化的,并附带标准主题和bootstrap4主题。
您还可以将表格渲染为CSV文档
use League\Csv\Writer; use WArslett\TableBuilder\Renderer\Csv\CsvRenderer; $csvRenderer = new CsvRenderer(); $csvRenderer->renderTable($table, Writer::createFromPath('/tmp/mycsv.csv'));
单页应用
表格还实现了JsonSerializable接口,因此可以在响应中编码为json,并由单页应用消费。
// GET /users/table return new JsonResponse($table);
依赖项
表格构建器核心依赖项最少,但一些可选功能有额外的依赖项。
- CsvRenderer和相关类依赖于
league/csv
- TwigRenderer和相关类依赖于
twig/twig
- DoctrineORMAdapter数据适配器依赖于
doctrine/orm
- SymfonyHttpAdapter响应适配器依赖于
symfony/http-foundation
- Psr7Adapter响应适配器依赖于
psr/http-message
- SymfonyRoutingAdapter路由生成适配器依赖于
symfony/routing