heimrichhannot/contao-exporter-bundle

将任何contao实体导出为文件的后端模块。

0.11.6 2024-04-08 12:05 UTC

README

一个将任何contao实体导出为文件的模块。

Contao Exporter Bundle Backend Config Preview

导出配置预览

功能

  • 导出实体和实体列表
  • 轻松将后端模块添加到您的应用程序/扩展,或使用前端模块
  • 可扩展的导出架构
  • 包含的导出器
    • CSV
    • Excel (xlsx)
    • PDF
    • 媒体文件(将关联实体的媒体文件作为存档(zip)导出)

Csv和Excel导出由Spout库归档。PDF导出由mPDF库归档。此库不是作为依赖项提供的,因此必须将其添加到您的捆绑包/项目依赖项中,以实现PDF导出功能。

技术说明

安装

使用composer安装

composer require heimrichhannot/contao-exporter-bundle

如果您想使用PDF导出器,请将"mpdf/mpdf":"^7.0"添加到您的composer依赖项。

后端导出

步骤1

按照如下方式在实体dca中定义您的全局操作

'global_operations' => [
    'export_csv' => \Contao\System::getContainer()->get('huh.exporter.action.backendexport')
        ->getGlobalOperation('export_csv',$GLOBALS['TL_LANG']['MSC']['export_csv'])
],

步骤2

按照如下方式在实体的config.php中添加您的后端模块

$GLOBALS['BE_MOD']['mygroup']['name'] = [
    'export_csv' => ['huh.exporter.action.backendexport', 'export'],
    'tables' => ['tl_name'],
];

步骤3

使用导出器的后端模块(组devtools)创建导出配置。

前端

您可以使用内置的前端模块添加简单的导出功能。

您还可以使用frontendeditformhybrid_list轻松创建一个模块,用于在前端操作您的实体。它已经包含了一个在提交后导出实体的功能!

您还可以为您的扩展创建自定义实现

  1. 使用导出器的后端模块(组devtools)创建导出配置。
  2. 在您的模块中调用huh.exporter.action.frontendexport服务的export()
/** @var Symfony\Component\DependencyInjection\ContainerInterface $container */
$container->get('huh.exporter.action.export')->export($config: ExporterModel, $entity: int|string, $fields = []: array);

开发者

从导出模块升级

请参阅升级说明

事件

您可以通过给定的事件挂钩到导出。如果您不知道如何操作,请参阅Symfony事件文档

添加自定义导出器

您可以通过添加自定义导出器来添加额外的文件类型或功能。

您的导出器类必须实现ExporterInterface,并且必须使用huh_exporter.exporter服务标记在容器中注册。我们建议扩展AbstractExporter,因为它已经实现了大部分的机制。

services:
  _defaults:
    autowire: true

  _instanceof:
    HeimrichHannot\ContaoExporterBundle\Exporter\ExporterInterface:
      tags: ['huh_exporter.exporter']
      lazy: true
      
  Your\Exporter\Class: ~

自定义字段选择

您可以将字段数组传递给导出器的export()。在导出项目时将使用这些字段。

有两种选项

  1. 字段名称列表。例如:['firstname','lastname','age']
  2. 带有标签和值的字段列表。应按照以下结构组织
<?php 
$fields = [
    'field1' => [
        'raw' => '', // raw field value
        'inputType' => '', // field input type 
        'value' => '', // formatted field value
        'formatted' => '', // formatted field value
        'label' => '', // formatted field value
    ],
    // ...
];

PDF

要使用PDF导出,您首先需要安装mPDF

模板

您可以覆盖pdf输出模板。模板使用Twig编写,名称应以exporter_pdf_开头。请参阅exporter_pdf_item_default.html.twig以获取一个工作示例。

字体

要添加自定义Pdf字体,请参阅Utils Bundle文档mPDF文档中相应的章节。之后,您可以在导出器配置中添加文件夹。