PHPackages                             wegmeister/databasestorage - PHPackages - PHPackages  [Skip to content](#main-content)[PHPackages](/)[Directory](/)[Categories](/categories)[Trending](/trending)[Leaderboard](/leaderboard)[Changelog](/changelog)[Analyze](/analyze)[Collections](/collections)[Log in](/login)[Sign up](/register)

1. [Directory](/)
2. /
3. [Parsing &amp; Serialization](/categories/parsing)
4. /
5. wegmeister/databasestorage

ActiveNeos-plugin[Parsing &amp; Serialization](/categories/parsing)

wegmeister/databasestorage
==========================

This package adds the ability to store inputs of a form (or other input) into database and export the stored data as xlsx.

2.1.3(1w ago)626.8k—8.7%11[5 issues](https://github.com/die-wegmeister/Wegmeister.DatabaseStorage/issues)[4 PRs](https://github.com/die-wegmeister/Wegmeister.DatabaseStorage/pulls)GPL-3.0-or-laterPHP

Since Mar 23Pushed 1w ago5 watchersCompare

[ Source](https://github.com/die-wegmeister/Wegmeister.DatabaseStorage)[ Packagist](https://packagist.org/packages/wegmeister/databasestorage)[ RSS](/packages/wegmeister-databasestorage/feed)WikiDiscussions master Synced yesterday

READMEChangelog (10)Dependencies (4)Versions (52)Used By (0)

Wegmeister.DatabaseStorage
==========================

[](#wegmeisterdatabasestorage)

This package adds the ability to store form submissions into a database and export the stored data as xlsx, xls, ods, csv or html.

Installation
------------

[](#installation)

To install the package simply run

```
composer require wegmeister/databasestorage

```

Usage
-----

[](#usage)

You can add the DatabaseStorage Finisher in the following ways.

Note

Since version `2.1.0` the DatabaseStorage Finisher will add a new form value `databaseStorageIdentifier` that can be used in further finishers. This value is the identifier of the database entry and can be helpful if you need to reference the entry in other finishers.

### Add DatabaseStorage using YAML definitions

[](#add-databasestorage-using-yaml-definitions)

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'
```

### Add DatabaseStorage using the Neos Form Builder

[](#add-databasestorage-using-the-neos-form-builder)

You can also use the DatabaseStorage with the [Neos.Form.Builder](https://github.com/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`!

### Add DatabaseStorage using a Fusion Form

[](#add-databasestorage-using-a-fusion-form)

You can also use the DatabaseStorage [Neos.Fusion.Form](https://github.com/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}
    }
}

```

Available settings
------------------

[](#available-settings)

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'
    # Number of entries per page on the identifier list view
    itemsPerPage: 20
    # Array list item prefix on the identifier list view
    listPrefix: '-'
    # 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'
```

Cleanup commands
----------------

[](#cleanup-commands)

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 NameData TypeDescriptiondate-intervalstringDefines which data should be deleted. We use the PHP DateInterval format. You can find more information [here](https://www.php.net/manual/en/class.dateinterval.php).include-configured-storagesbooleanIf you have configured storages in your settings, you can skip them with this parameter.remove-filesbooleanThe PersistentResource that is potentially attached to the database storage entry will be removed as well.```
./flow databasestorage:cleanupallstorages --date-interval=P1M --remove-files

```

###  Health Score

57

↑

FairBetter than 98% of packages

Maintenance82

Actively maintained with recent releases

Popularity35

Limited adoption so far

Community22

Small or concentrated contributor base

Maturity76

Established project with proven stability

 Bus Factor1

Top contributor holds 70.4% of commits — single point of failure

How is this calculated?**Maintenance (25%)** — Last commit recency, latest release date, and issue-to-star ratio. Uses a 2-year decay window.

**Popularity (30%)** — Total and monthly downloads, GitHub stars, and forks. Logarithmic scaling prevents top-heavy scores.

**Community (15%)** — Contributors, dependents, forks, watchers, and maintainers. Measures real ecosystem engagement.

**Maturity (30%)** — Project age, version count, PHP version support, and release stability.

###  Release Activity

Cadence

Every ~65 days

Recently: every ~154 days

Total

47

Last Release

8d ago

Major Versions

1.2.11 → 2.0.02022-10-04

1.2.x-dev → 2.0.32024-07-22

### Community

Maintainers

![](https://www.gravatar.com/avatar/028c454abbb42f4b6e8f9d37a12857f56a8eda4be858b85185bd57a6ba512540?d=identicon)[wegmeister](/maintainers/wegmeister)

---

Top Contributors

[![Benjamin-K](https://avatars.githubusercontent.com/u/3098031?v=4)](https://github.com/Benjamin-K "Benjamin-K (88 commits)")[![markusguenther](https://avatars.githubusercontent.com/u/1014126?v=4)](https://github.com/markusguenther "markusguenther (9 commits)")[![bibergem](https://avatars.githubusercontent.com/u/75987806?v=4)](https://github.com/bibergem "bibergem (6 commits)")[![connykaelinvisol](https://avatars.githubusercontent.com/u/126244928?v=4)](https://github.com/connykaelinvisol "connykaelinvisol (6 commits)")[![lorenzulrich](https://avatars.githubusercontent.com/u/1816023?v=4)](https://github.com/lorenzulrich "lorenzulrich (5 commits)")[![anianweber](https://avatars.githubusercontent.com/u/18150589?v=4)](https://github.com/anianweber "anianweber (3 commits)")[![christophengelmayer](https://avatars.githubusercontent.com/u/3295750?v=4)](https://github.com/christophengelmayer "christophengelmayer (2 commits)")[![siggj](https://avatars.githubusercontent.com/u/526370?v=4)](https://github.com/siggj "siggj (1 commits)")[![beardcoder](https://avatars.githubusercontent.com/u/9371658?v=4)](https://github.com/beardcoder "beardcoder (1 commits)")[![fdsis](https://avatars.githubusercontent.com/u/54950395?v=4)](https://github.com/fdsis "fdsis (1 commits)")[![lcherpit](https://avatars.githubusercontent.com/u/490499?v=4)](https://github.com/lcherpit "lcherpit (1 commits)")[![mbiberger](https://avatars.githubusercontent.com/u/8565550?v=4)](https://github.com/mbiberger "mbiberger (1 commits)")[![akappler](https://avatars.githubusercontent.com/u/30337968?v=4)](https://github.com/akappler "akappler (1 commits)")

---

Tags

neos-cmsneos-pluginxlsxyaml

### Embed Badge

![Health badge](/badges/wegmeister-databasestorage/health.svg)

```
[![Health](https://phpackages.com/badges/wegmeister-databasestorage/health.svg)](https://phpackages.com/packages/wegmeister-databasestorage)
```

###  Alternatives

[craftcms/cms

Craft CMS

3.6k3.6M3.1k](/packages/craftcms-cms)[kimai/kimai

Kimai - Time Tracking

4.8k9.0k1](/packages/kimai-kimai)[civicrm/civicrm-core

Open source constituent relationship management for non-profits, NGOs and advocacy organizations.

751291.4k43](/packages/civicrm-civicrm-core)[yajra/laravel-datatables-export

Laravel DataTables Queued Export Plugin.

362.2M4](/packages/yajra-laravel-datatables-export)[solspace/craft-freeform

The most flexible and user-friendly form building plugin!

54681.3k18](/packages/solspace-craft-freeform)[2lenet/crudit-bundle

The easy like Crud'it Bundle.

1616.4k14](/packages/2lenet-crudit-bundle)

PHPackages © 2026

[Directory](/)[Categories](/categories)[Trending](/trending)[Changelog](/changelog)[Analyze](/analyze)
