punktde / form-persistence
提供表单完成器以将表单数据保存到数据库,以及一个后端模块以下载数据。
Requires
- league/csv: ^9.0
- neos/form: *
- neos/fusion: *
- neos/neos: ^5.0 || ^7.0 || ^8.0
- neos/swiftmailer: >=7.0
- neos/utility-arrays: *
- phpoffice/phpspreadsheet: ^1.18
Requires (Dev)
- phpstan/phpstan: ^1.4
Suggests
- neos/form-builder: Adds a builder for the Flow Form Framework to the Neos CMS backend.
- dev-master
- 3.1.2
- 3.1.1
- 3.1.0
- 3.0.0
- 2.6.3
- 2.6.2
- 2.6.1
- 2.6.0
- 2.5.x-dev
- 2.5.3
- 2.5.2
- 2.5.1
- 2.5.0
- 2.4.1
- 2.4.0
- 2.3.0
- 2.2.0
- 2.1.4
- 2.1.3
- 2.1.2
- 2.1.1
- 2.1.0
- 2.0.x-dev
- 2.0.0
- 1.0.1
- 1.0.0
- dev-dependabot/npm_and_yarn/Resources/Public/ExportDefinitionEditorApp/json5-1.0.2
- dev-dependabot/npm_and_yarn/Resources/Public/ExportDefinitionEditorApp/express-4.18.2
- dev-dependabot/npm_and_yarn/Resources/Public/ExportDefinitionEditorApp/qs-6.5.3
- dev-dependabot/npm_and_yarn/Resources/Public/ExportDefinitionEditorApp/decode-uri-component-0.2.2
- dev-feature/add-excel-exporter
- dev-bugfix/make-packae-work-with-only_full_group_by
- dev-task/neos-70-compatibility
This package is auto-updated.
Last update: 2024-09-17 14:53:37 UTC
README
功能
- 持久化完成器,将表单数据持久化到您的数据库。
- 它还提供了一个用于以不同格式下载数据的 后端模块。
- 一个 导出定义编辑器 允许您定义自定义导出定义。
- 数据可以定期通过电子邮件 汇总发送。
- 可以配置 保留策略 以遵守数据隐私政策。
- 可以通过站点或内容维度 限制对数据的访问。
- 通过表单标识符和表单字段标识符的哈希值的组合对表单数据进行聚合,以避免在表单更改时发生冲突。
安装
composer require punktde/form-persistence
安装成功后,运行 ./flow doctrine:migrate
以初始化数据库表。
配置
排除要保存的表单类型
某些表单类型仅用于构建表单或显示静态文本,不应可用于导出。现在可以使用可扩展的配置排除这些表单类型。
PunktDe: Form: Persistence: finisher: excludedFormTypes: 'Neos.Form:StaticText': true
导出定义
可以通过设置定义静态导出定义。
fileNamePattern:
示例: Form-Export-{formIdentifier}-{currentDate}.csv
以下变量可以使用:
- formIdentifier
- formVersionHash
- currentDate
- exportDefinitionIdentifier
处理器链
用于处理表单数据的处理步骤在 processorChain
配置中定义。此链目前用于所有导出。您可以使用位置数组拆分语法添加自己的处理器,以确定其在链中的位置。
示例
PunktDe: Form: Persistence: processorChain: # My processor myProcessor: class: 'Vendor\FormProcessors\MyProcessor' position: end
权限
表单数据可能包含敏感数据。因此,该包提供权限以允许后端用户个别访问。
站点权限
在多站点环境中,您可以使用 PunktDe\Form\Persistence\Authorization\Privilege\SitePrivilege
限制对表单数据的访问,具体取决于站点。在 Policy.yaml
中添加以下内容:
'PunktDe\Form\Persistence\Authorization\Privilege\SitePrivilege': 'PunktDe.Form.Persistence:Sites.All': label: Access to form data of all sites matcher: '*' 'PunktDe.Form.Persistence:Sites.MyFirstSite': label: Access to form data of site my-site matcher: 'my-site'
匹配器接受 '*', 单个名称或以逗号分隔的站点名称列表。
维度权限
在多维度环境中,您可以使用 PunktDe\Form\Persistence\Authorization\Privilege\SitePrivilege
限制对表单数据的访问,具体取决于内容维度组合。在 Policy.yaml
中添加以下内容:
'PunktDe\Form\Persistence\Authorization\Privilege\ContentDimensionPrivilege': 'PunktDe.Form.Persistence:Dimensions.All': label: Access to form data of all content dimensions matcher: '*' 'PunktDe.Form.Persistence:Dimensions.Germany': label: Access to form data of all langues in the german country matcher: '{"country": ["deu"]}'
匹配器接受 '*', 或维度的 json 定义。有关详细信息,请参阅 ContentDimensionPrivilegeTargetTest.php
。
用法
添加 SaveFormDataFinisher
使用 flow 表单配置
type: 'Neos.Form:Form' identifier: 'my-form' renderables: ... finishers: saveFormData: identifier: 'PunktDe.Form.Persistence:SaveFormDataFinisher'
使用 Neos 表单构建器
需要建议的包 neos/form-builder,并将保存表单数据完成器添加到 neos 后端的节点表单中。
计划导出
您的表单数据导出可以定期发送到特定的电子邮件地址。电子邮件地址和导出定义可以直接在完成器中配置。要触发导出,需要调用命令 formPersistence:sendExport
。
后端模块
下载表单数据
提供了一个简单的后端模块,可以以多种格式(如CSV、Excel和Html)下载表单数据。以下是可能的格式列表:https://phpspreadsheet.readthedocs.io/en/latest/。表单版本指定了使用的字段及其位置。因此,如果表单随时间变化,将生成具有一致标题和列位置的单独CSV或Excel文件。
定义导出定义
该软件包提供了一个图形编辑器,用于定义导出定义。使用导出定义,您可以定义要添加到导出的字段及其名称。
清理旧表单数据
为了手动或定期清理旧表单数据条目,需要配置保留期限并调用命令 formpersistence:cleanupformdata
。在以下示例中,配置了30天的保留期限,因此每次调用该命令时,都会删除30天以上的旧表单数据条目。
PunktDe: Form: Persistence: formDataCleanup: retentionPeriod: 'P30D'
整个功能封装在服务中,以便更好地集成到不同的方法中,以便定期执行此功能,例如使用调度程序或排队工作流。
开发软件包
导出定义编辑器
使用react应用程序
要开始修改导出定义应用程序,请转到文件夹 PunktDe.Form.Persistence/Resources/Public/ExportDefinitionEditorApp
并运行命令
yarn install
在安装所有依赖项后,您可以调整react应用程序的代码。该应用程序使用creat-react-app脚手架工具创建,因此使用其构建配置并进行了调整。要查看更改,您需要使用以下命令构建应用程序。
yarn build
生成的文件 main.js
位于文件夹 build/static/js
中。此文件在Neos后端中加载,是您看到的编辑器。
使用PHPStan运行测试
分析整个项目
vendor/bin/phpstan analyse -c phpstan.neon
分析特定文件
vendor/bin/phpstan analyse Classes/Path/To/File.php