mobizel / sylius-export-plugin
批量导出 Sylius 资源
Requires
- php: ^8.0
- portphp/csv: ^1.1
- sylius/grid-bundle: ^1.10
- sylius/resource-bundle: ^1.8
- symfony/asset: ^5.3
Requires (Dev)
- behat/behat: ^3.6.1
- behat/mink-selenium2-driver: ^1.4
- dbrekelmans/bdi: ^1.0
- dmore/behat-chrome-extension: ^1.3
- dmore/chrome-mink-driver: ^2.7
- friends-of-behat/mink: ^1.8
- friends-of-behat/mink-browserkit-driver: ^1.4
- friends-of-behat/mink-debug-extension: ^2.0.0
- friends-of-behat/mink-extension: ^2.4
- friends-of-behat/page-object-extension: ^0.3
- friends-of-behat/suite-settings-extension: ^1.0
- friends-of-behat/symfony-extension: ^2.1
- friends-of-behat/variadic-extension: ^1.3
- friendsofsymfony/oauth-server-bundle: ^1.6 || >2.0.0-alpha.0 ^2.0@dev
- matthiasnoback/symfony-dependency-injection-test: ^4.2.1
- phpspec/phpspec: ^7.0
- phpstan/extension-installer: ^1.0
- phpstan/phpstan: 0.12.85
- phpstan/phpstan-doctrine: 0.12.33
- phpstan/phpstan-strict-rules: ^0.12.0
- phpstan/phpstan-webmozart-assert: 0.12.12
- phpunit/phpunit: ^9.5
- polishsymfonycommunity/symfony-mocker-container: ^1.0
- se/selenium-server-standalone: 2.*
- sensiolabs/security-checker: ^6.0
- sylius-labs/coding-standard: ^4.0
- sylius/sylius: ^1.11
- symfony/browser-kit: ^5.3
- symfony/debug-bundle: ^5.3
- symfony/dotenv: ^5.3
- symfony/intl: ^5.3
- symfony/web-profiler-bundle: ^5.3
- vimeo/psalm: 4.7.1
- dev-main
- v0.6.0
- v0.5.1
- v0.5.0
- v0.4
- v0.3
- v0.2
- v0.1.3
- v0.1
- dev-feature/sf6
- dev-dependabot/npm_and_yarn/tests/Application/express-4.18.2
- dev-dependabot/npm_and_yarn/tests/Application/decode-uri-component-0.2.2
- dev-dependabot/npm_and_yarn/tests/Application/qs-6.5.3
- dev-dependabot/npm_and_yarn/tests/Application/minimatch-3.0.8
- dev-dependabot/npm_and_yarn/tests/Application/terser-4.8.1
- dev-dependabot/npm_and_yarn/tests/Application/eventsource-1.1.1
- dev-dependabot/npm_and_yarn/tests/Application/async-2.6.4
- dev-dependabot/npm_and_yarn/tests/Application/moment-2.29.2
- dev-dependabot/npm_and_yarn/tests/Application/minimist-1.2.6
- dev-dependabot/npm_and_yarn/tests/Application/follow-redirects-1.14.9
- dev-dependabot/npm_and_yarn/tests/Application/url-parse-1.5.10
- dev-dependabot/composer/phpspec/phpspec-tw-7.1
- dev-dependabot/composer/symfony/dotenv-tw-5.3
- dev-dependabot/add-v2-config-file
- dev-dependabot/composer/symfony/debug-bundle-tw-5.1.11
- dev-dependabot/composer/lakion/mink-debug-extension-tw-2.0.0
- dev-dependabot/composer/sensiolabs/security-checker-tw-6.0
- dev-dependabot/composer/phpstan/phpstan-shim-tw-0.12
- dev-dependabot/composer/symfony/web-profiler-bundle-tw-5.0.11
- dev-dependabot/composer/se/selenium-server-standalone-tw-3.141
This package is auto-updated.
Last update: 2024-09-11 16:01:53 UTC
README
Mobizel 导出插件
入门
此插件为所有 Sylius 资源添加了一个新的批量操作 'export'。
它使用默认的资源网格定义来导出数据。
您还可以使用特定的网格进行导出。
它允许您导出
- 所有实体
- 通过搜索过滤的所有实体
- 选定的实体(带复选框)
重要提示:此插件不依赖于 sylius/sylius
,而仅依赖于 sylius/resource-bundle
和 sylius/grid-bundle
,因此可以在其他项目(如 symfony starter monofony)中使用。
安装
- 要求和安装插件
- 运行
composer require mobizel/sylius-export-plugin
- 注册包
=> 如果您不使用 symfony/flex
,则必须在 Kernel 中导入插件。
<?php // config/bundles.php return [ // ... Mobizel\SyliusExportPlugin\MobizelSyliusExportPlugin::class => ['all' => true], ];
配置
网格配置
如果不存在,则创建文件 config/packages/sylius_grid.yaml
并添加新的批量操作
sylius_grid: templates: bulk_action: export: "@MobizelSyliusExportPlugin/Admin/Grid/BulkAction/export.html.twig"
添加新的按钮宏
添加以下文件以添加新的按钮宏。
# templates/bundles/SyliusUiBundle/Macro/buttons.html.twig {% extends "@!SyliusUi/Macro/buttons.html.twig" %} {% macro bulkExport(url, message, labeled = true) %} <form action="{{ url }}" method="post" id="bulk-export"> <a class="ui red {% if labeled %}labeled {% endif %}icon button not_disabled" type="submit" href="#"> <i class="icon download"></i> {{ ((message is empty and labeled) ? 'sylius.ui.export' : message)|trans }} </a> </form> {% endmacro %}
JavaScript 集成
将 vendor/mobizel/sylius-export-plugin/src/Resources/public/js/bulk-export.js
集成到您的 JavaScript 构建中(webpack / gulp)或直接在 twig 中(您需要将文件复制到您的资产目录)
Twig 集成示例
<script src="{{ asset('bundles/mobizelsyliusexportplugin/js/bulk-export.js') }}"></script>
如何使用它
示例
您只需将导出批量操作添加到网格中,例如在客户网格中,创建文件 config/grids/admin/customer.yaml
以覆盖客户的网格
sylius_grid: grids: sylius_admin_customer: actions: bulk: export: type: export
接下来,启用您的网格。
编辑 config/packages/sylius_grid.yaml
并在顶部添加
imports: - { resource: '../grids/admin/customer.yaml' }
如何启用选定实体的导出
选定实体的导出默认情况下不工作。您需要重写实体存储库。
客户示例
- 创建 CustomerRepository 类
<?php declare(strict_types=1); namespace Tests\Mobizel\SyliusExportPlugin\Application\src\Repository; use Doctrine\ORM\QueryBuilder; use Sylius\Bundle\CoreBundle\Doctrine\ORM\CustomerRepository as BaseCustomerRepository; class CustomerRepository extends BaseCustomerRepository { public function createListQueryBuilderFilteredByIds(?array $ids): QueryBuilder { $queryBuilder = $this->createQueryBuilder('o'); if (null !== $ids && count($ids) > 0) { $queryBuilder ->andWhere($queryBuilder->expr()->in('o.id', ':ids')) ->setParameter('ids', $ids); } return $queryBuilder; } }
注意:我们添加了新方法来通过 id 获取实体
-
如果不存在,则创建文件
config/packages/sylius_customer
-
在此文件中设置自定义存储库
sylius_customer: resources: customer: classes: repository: Repository\CustomerRepository
- 更新客户网格以使用新方法
sylius_grid: grids: sylius_admin_customer: driver: options: class: "%sylius.model.customer.class%" OR App\Entity\Customer\Customer repository: method: createListQueryBuilderFilteredByIds arguments: - $ids
完整文件
sylius_grid: grids: sylius_admin_customer: driver: options: class: "%sylius.model.customer.class%" OR App\Entity\Customer\Customer repository: method: createListQueryBuilderFilteredByIds arguments: - $ids actions: bulk: export: type: export
如何使用自定义网格
如果您在导出实体时想要使用自定义网格,只需覆盖路由并指定网格参数即可,例如客户示例
sylius_backend_customer_bulk_export: path: /customers/bulk-export methods: [POST] defaults: _controller: sylius.controller.customer:exportAction _sylius: grid: my_custom_grid ...
自定义导出格式
此插件仅使用 CSV 进行导出,但是您可以实现自己的导出。创建一个实现 Mobizel\SyliusExportPlugin\Exporter\ResourceExporterInterface
的新类。
如果您创建了一个具有方法的 XmlResourceExport
public function getFormat(): string { return 'xml'; }
您可以在路由定义中更改导出格式
sylius_backend_customer_bulk_export: path: /customers/bulk-export methods: [POST] defaults: _controller: sylius.controller.customer:exportAction _sylius: grid: my_custom_grid vars: export_format: xml ...
CSV 设置
您可以配置 CSV 编写器的设置。
# config/packages/mobizel_sylius_export.yaml mobizel_sylius_export: csv_settings: delimiter: ';'
贡献
想要帮助我们吗?请随时提交 pull-request!
许可证
Sylius 导出插件完全免费,并按照 MIT 许可证发布。
作者
Sylius 导出插件最初由 Kévin REGNIER 创建。