This package adds the ability to store form submissions into a database and export the stored data as xlsx, xls, ods, csv or html.
To install the package simply run
composer require wegmeister/databasestorage
You can add the DatabaseStorage Finisher in the following ways:
Add the DatabaseStorage a finisher in your form definition/yaml file:
type: 'Neos.Form:Form'
identifier: 'some-identifier'
label: 'My form'
renderables:
# Your renderables / form fields go here
finishers:
-
identifier: 'Wegmeister.DatabaseStorage:DatabaseStorageFinisher'
options:
# The identifier is used to group your data in the database.
# You should avoid using the same identifier twice or your data could become a little messed up.
identifier: 'my-form-data'
You can also use the DatabaseStorage with the Neos.Form.Builder. You should be able to simply add DatabaseStorage as a finisher to your form.
Don't forget to set a (unique) identifier
!
You can also use the DatabaseStorage Neos.Fusion.Form action.
Add the following configuration to your form action definition:
databaseStorage {
type = '\\Wegmeister\\DatabaseStorage\\FusionForm\\Runtime\\Action\\DatabaseStorageAction'
options {
identifier = 'identifier-in-backend'
formValues = ${data}
}
}
The following settings are available and can be overridden by your Settings.yaml:
Wegmeister:
DatabaseStorage:
# Creator name of the exported files
creator: 'die wegmeister gmbh'
# Title for the exported files
title: 'Database Export'
# Subject for the exported files
subject: 'Database Export'
# DateTime format if the datetime is included in the export
datetimeFormat: 'Y-m-d H:i:s'
# Form element types that should not be stored by the finisher (for Node-based forms)
nodeTypesIgnoredInFinisher:
- 'Neos.Form.Builder:Section'
- 'Neos.Form.Builder:StaticText'
# Form element types that should not be part of the export (for Node-based forms)
nodeTypesIgnoredInExport:
- 'Neos.Form.Builder:Section'
- 'Neos.Form.Builder:StaticText'
- 'Neos.Form.Builder:Password'
- 'Neos.Form.Builder:PasswordWithConfirmation'
The package comes with cleanup commands to delete data older than a date interval you can define in your settings. You can run the command manually or use a cron job.
Add storages you wish to be cleaned up and define how long the data of each storage should be stored:
Wegmeister:
DatabaseStorage:
cleanup:
# Add storage identifier you wish to be cleaned up
storageIdentifier1:
# Define how long the data should be stored as date interval
# https://www.php.net/manual/en/class.dateinterval.php
dateInterval: "P6M"
removeFiles: true
storageIdentifier2:
dateInterval: "P1Y"
removeFiles: false
Run the cleanup command for the configured storages:
./flow databasestorage:cleanupconfiguredstorages
You can also run a cleanup command for all existing storages. The command comes with parameters:
Parameter Name | Data Type | Description |
---|---|---|
date-interval | string | Defines which data should be deleted. We use the PHP DateInterval format. You can find more information here. |
include-configured-storages | boolean | If you have configured storages in your settings, you can skip them with this parameter. |
remove-files | boolean | The PersistentResource that is potentially attached to the database storage entry will be removed as well. |
./flow databasestorage:cleanupallstorages --date-interval=P1M --remove-files