PHPackages                             move-elevator/typo3-repeatable-form-elements - 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. [Utility &amp; Helpers](/categories/utility)
4. /
5. move-elevator/typo3-repeatable-form-elements

ActiveTypo3-cms-extension[Utility &amp; Helpers](/categories/utility)

move-elevator/typo3-repeatable-form-elements
============================================

Adds a new form element which allows the editor to create new container elements with any type fields in them. In the frontend, a user can create any number of new containers. This is an extension for TYPO3 CMS.

6.0.0(1mo ago)01.1k↑118.8%GPL-2.0-or-laterPHPPHP ~8.2.0 || ~8.3.0 || ~8.4.0 || ~8.5.0CI passing

Since Apr 21Pushed 1mo agoCompare

[ Source](https://github.com/move-elevator/typo3-repeatable-form-elements)[ Packagist](https://packagist.org/packages/move-elevator/typo3-repeatable-form-elements)[ RSS](/packages/move-elevator-typo3-repeatable-form-elements/feed)WikiDiscussions main Synced 3w ago

READMEChangelogDependencies (7)Versions (4)Used By (0)

[![Extension icon](Resources/Public/Icons/Extension.svg)](Resources/Public/Icons/Extension.svg)TYPO3 extension `repeatable_form_elements`
==========================================

[](#typo3-extension-repeatable_form_elements)

[![Latest Stable Version](https://camo.githubusercontent.com/c1c42115e445db6df70e0c6ae25822f01c34a374be36ab234dd7dc14668f3a4b/68747470733a2f2f7479706f332d6261646765732e6465762f62616467652f72657065617461626c655f666f726d5f656c656d656e74732f76657273696f6e2f736869656c64732e737667)](https://extensions.typo3.org/extension/repeatable_form_elements)[![Supported TYPO3 versions](https://camo.githubusercontent.com/9681f68cd349b326db2e4a11dbb6d852c09b06ab433de20fce4565f272478248/68747470733a2f2f7479706f332d6261646765732e6465762f62616467652f72657065617461626c655f666f726d5f656c656d656e74732f7479706f332f736869656c64732e737667)](https://extensions.typo3.org/extension/repeatable_form_elements)[![Supported PHP Versions](https://camo.githubusercontent.com/c6fe8c71baa2bced7611508606af737645be45e18b3f13caf1b7654b5f9e9d9a/68747470733a2f2f696d672e736869656c64732e696f2f7061636b61676973742f646570656e64656e63792d762f6d6f76652d656c657661746f722f7479706f332d72657065617461626c652d666f726d2d656c656d656e74732f7068703f6c6f676f3d706870)](https://packagist.org/packages/move-elevator/typo3-repeatable-form-elements)[![Stability](https://camo.githubusercontent.com/4ab9a411a5caa353fa13d65ac8a745ce6bf5fdcf67edf4eef9a6e4cf23177512/68747470733a2f2f7479706f332d6261646765732e6465762f62616467652f72657065617461626c655f666f726d5f656c656d656e74732f73746162696c6974792f736869656c64732e737667)](https://camo.githubusercontent.com/4ab9a411a5caa353fa13d65ac8a745ce6bf5fdcf67edf4eef9a6e4cf23177512/68747470733a2f2f7479706f332d6261646765732e6465762f62616467652f72657065617461626c655f666f726d5f656c656d656e74732f73746162696c6974792f736869656c64732e737667)[![CGL](https://camo.githubusercontent.com/0b2cb21fc0d53f24fac6b0cacccd26733f7e1062124048678dc2964fd480482a/68747470733a2f2f696d672e736869656c64732e696f2f6769746875622f616374696f6e732f776f726b666c6f772f7374617475732f6d6f76652d656c657661746f722f7479706f332d72657065617461626c652d666f726d2d656c656d656e74732f63676c2e796d6c3f6c6162656c3d63676c266c6f676f3d676974687562)](https://github.com/move-elevator/typo3-repeatable-form-elements/actions/workflows/cgl.yml)[![Tests](https://camo.githubusercontent.com/231a1dc261080f87267bb599bb4222e59a655813b048ad242b77fd20a5bd25b6/68747470733a2f2f696d672e736869656c64732e696f2f6769746875622f616374696f6e732f776f726b666c6f772f7374617475732f6d6f76652d656c657661746f722f7479706f332d72657065617461626c652d666f726d2d656c656d656e74732f74657374732e796d6c3f6c6162656c3d7465737473266c6f676f3d676974687562)](https://github.com/move-elevator/typo3-repeatable-form-elements/actions/workflows/tests.yml)[![License](https://camo.githubusercontent.com/28156a2318a5ba0297c5cffa2c6224c2f520bbf06f918b8f937033446e133f79/68747470733a2f2f706f7365722e707567782e6f72672f6d6f76652d656c657661746f722f7479706f332d72657065617461626c652d666f726d2d656c656d656e74732f6c6963656e7365)](LICENSE)

Note

This is a fork of [tritum/repeatable\_form\_elements](https://github.com/tritum/repeatable_form_elements), the original extension by Ralf Zimmermann / dreistrom.land. This fork adds TYPO3 v14 compatibility, PSR-14 event migration, CI/CD infrastructure and a DDEV-based multi-version test environment.

A TYPO3 extension that adds a **Repeatable container** element to the TYPO3 form framework. It allows editors to create container elements with any type of fields. In the frontend, users can dynamically add and remove copies of the container. Validation is copied automatically and all form finishers are aware of the duplicated fields.

📋 Requirements
--------------

[](#-requirements)

RequirementVersionPHP8.2 – 8.5TYPO313.4 LTS, 14.x🚀 Installation
--------------

[](#-installation)

```
composer require move-elevator/typo3-repeatable-form-elements
```

Add the site set `tritum/repeatable-form-elements` to the dependencies of your site package's site set:

```
# Configuration/Sets/YourSitePackage/config.yaml
dependencies:
  - tritum/repeatable-form-elements
```

💡 Usage
-------

[](#-usage)

1. Open the TYPO3 **form editor** and create or open a form.
2. Add a new element — the modal lists the **Repeatable container**.
3. Add fields with validators to the container.
4. In the frontend, the container renders as a `` with **copy** and **remove** buttons.

### Extended SaveToDatabaseFinisher

[](#extended-savetodatabasefinisher)

An extended version of the `SaveToDatabaseFinisher` is included for persisting repeatable container data. See the [example form definition](Resources/Private/ExampleFormDefinitions/extended-save-to-database-finisher.form.yaml).

⚙️ Configuration
----------------

[](#️-configuration)

To deactivate the copying of variants, disable the feature flag:

```
$GLOBALS['TYPO3_CONF_VARS']['SYS']['features']['repeatableFormElements.copyVariants'] = false;
```

🔌 Extendability
---------------

[](#-extendability)

EventDescription`CopyVariantEvent`Modify or disable specific copied variants during container duplication.`AfterBuildingFinishedEvent`React after a form renderable has been built/copied by the repeatable container logic. Replaces the removed `afterBuildingFinished` SC\_OPTIONS hook.🤝 Contributing
--------------

[](#-contributing)

Contributions are welcome! See [CONTRIBUTING.md](CONTRIBUTING.md) for setup instructions, linting, testing and the PR workflow.

📝 Changelog
-----------

[](#-changelog)

See [CHANGELOG.md](CHANGELOG.md) for a list of changes.

🏆 Credits
---------

[](#-credits)

Originally created by [Ralf Zimmermann / dreistrom.land](https://dreistrom.land). See the [original repository](https://github.com/tritum/repeatable_form_elements) for the full list of contributors.

This fork is maintained by [move:elevator](https://move-elevator.de).

📄 License
---------

[](#-license)

GPL-2.0-or-later — see [LICENSE](LICENSE) for details.

###  Health Score

47

—

FairBetter than 93% of packages

Maintenance92

Actively maintained with recent releases

Popularity21

Limited adoption so far

Community15

Small or concentrated contributor base

Maturity53

Maturing project, gaining track record

 Bus Factor2

2 contributors hold 50%+ of commits

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

Unknown

Total

1

Last Release

38d ago

### Community

Maintainers

![](https://www.gravatar.com/avatar/f71257bb4db7f3adcabdc7d93e0f84c00aa50689b1411976b57f6a57ed7b6b2e?d=identicon)[move-elevator](/maintainers/move-elevator)

---

Top Contributors

[![konradmichalik](https://avatars.githubusercontent.com/u/4558190?v=4)](https://github.com/konradmichalik "konradmichalik (44 commits)")[![tritum](https://avatars.githubusercontent.com/u/1932663?v=4)](https://github.com/tritum "tritum (21 commits)")[![chrosey](https://avatars.githubusercontent.com/u/7964040?v=4)](https://github.com/chrosey "chrosey (19 commits)")[![waldhacker1](https://avatars.githubusercontent.com/u/4954582?v=4)](https://github.com/waldhacker1 "waldhacker1 (8 commits)")[![eliashaeussler](https://avatars.githubusercontent.com/u/16313625?v=4)](https://github.com/eliashaeussler "eliashaeussler (7 commits)")[![Hawkeye1909](https://avatars.githubusercontent.com/u/19345395?v=4)](https://github.com/Hawkeye1909 "Hawkeye1909 (3 commits)")[![FalkoLinke](https://avatars.githubusercontent.com/u/28533223?v=4)](https://github.com/FalkoLinke "FalkoLinke (1 commits)")[![mbrodala](https://avatars.githubusercontent.com/u/5037116?v=4)](https://github.com/mbrodala "mbrodala (1 commits)")[![olilo](https://avatars.githubusercontent.com/u/391866?v=4)](https://github.com/olilo "olilo (1 commits)")[![sabbelasichon](https://avatars.githubusercontent.com/u/13050560?v=4)](https://github.com/sabbelasichon "sabbelasichon (1 commits)")[![asakurayoh](https://avatars.githubusercontent.com/u/327551?v=4)](https://github.com/asakurayoh "asakurayoh (1 commits)")[![Jaykju](https://avatars.githubusercontent.com/u/33766870?v=4)](https://github.com/Jaykju "Jaykju (1 commits)")

---

Tags

typo3typo3-extensiontypo3-form

###  Code Quality

TestsPHPUnit

### Embed Badge

![Health badge](/badges/move-elevator-typo3-repeatable-form-elements/health.svg)

```
[![Health](https://phpackages.com/badges/move-elevator-typo3-repeatable-form-elements/health.svg)](https://phpackages.com/packages/move-elevator-typo3-repeatable-form-elements)
```

###  Alternatives

[eliashaeussler/typo3-form-consent

Extension for TYPO3 CMS that adds double opt-in functionality to EXT:form

1595.5k](/packages/eliashaeussler-typo3-form-consent)[pagemachine/typo3-formlog

Form log for TYPO3

23238.6k8](/packages/pagemachine-typo3-formlog)[typo3/cms-install

TYPO3 CMS Install Tool - The Install Tool is used for installation, upgrade, system administration and setup tasks.

1812.3M509](/packages/typo3-cms-install)[typo3/cms-styleguide

TYPO3 extension to showcase TYPO3 Backend capabilities

106760.3k34](/packages/typo3-cms-styleguide)[eliashaeussler/typo3-warming

Warming - Warms up Frontend caches based on an XML sitemap. Cache warmup can be triggered via TYPO3 backend or using a console command. Supports multiple languages and custom crawler implementations.

22260.2k](/packages/eliashaeussler-typo3-warming)[friendsoftypo3/content-blocks

TYPO3 CMS Content Blocks - Content Types API | Define reusable components via YAML

103519.9k57](/packages/friendsoftypo3-content-blocks)

PHPackages © 2026

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