PHPackages                             amdeu/typo3-shape - 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. amdeu/typo3-shape

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

amdeu/typo3-shape
=================

Extensible and editor-friendly TYPO3 Form Extension

0.4.0(5mo ago)010GPL-2.0-or-laterPHPPHP ^8.2

Since Oct 27Pushed 3mo ago1 watchersCompare

[ Source](https://github.com/amdeu/typo3-shape)[ Packagist](https://packagist.org/packages/amdeu/typo3-shape)[ RSS](/packages/amdeu-typo3-shape/feed)WikiDiscussions main Synced 1mo ago

READMEChangelog (4)Dependencies (5)Versions (11)Used By (0)

shape: TYPO3 Form Extension
===========================

[](#shape-typo3-form-extension)

Shape is a TYPO3 extension for building and managing web forms using a TCA/Record-based approach. It offers a wide range of field types, validation options, and features like multi-step forms, repeatable fields, display conditions, double opt-in, and more.

Motivation
----------

[](#motivation)

Apart from it being a fun project, shape offers a slightly different approach to form building compared to ext:form:

### 🗄️ TCA/Record-Based Architecture

[](#️-tcarecord-based-architecture)

Form models are TYPO3 [Records](https://docs.typo3.org/m/typo3/reference-coreapi/main/en-us/ApiOverview/Database/DatabaseRecords/RecordObjects.html#record_objects) configured via TCA.

**Benefits:**

- Modify TCA to add custom properties, change field types, and adapt the backend interface
- TCA defines both the editor UI and the data model in one place, no PHP class extension or configuration files needed
- Records automatically resolve relations (file references, inline records, foreign references)
- Full TCA field type ecosystem available (select, group, inline, file, etc.)
- Localization behavior configurable via TCA (language synchronization)
- Integrators are familiar with TCA, ext:form's YAML configuration definitions can be overwhelming

**Trade-off:** Less flexible and powerful than file-based systems like ext:form (no variants, no YAML-level configuration). Better suited for integrators who prefer working with TCA/Records over configuration files.

> **Note:** The architecture supports alternative form model implementations

### ✨ Editor-Focused Interface

[](#-editor-focused-interface)

Minimal TypoScript by design. Almost all features configurable via backend by default. Knowledgeable editors can build complex forms independently.

### 🌐 HTML5 Form Standards

[](#-html5-form-standards)

Field types represent standard HTML form controls and their attributes. Configure native browser validation (via `required`, `pattern`, `maxlength`, `accept`, `min`, `step`, etc.) - the same properties are automatically enforced server-side.

Features
--------

[](#features)

### 🏗️ Form Building

[](#️-form-building)

- **📝 30+ field types** - All standard HTML5 types plus advanced fields
- **📄 Multi-step forms** - Navigate between pages with session state management
- **🔁 Repeatable field groups** - Dynamically add/remove fieldsets (e.g., multiple addresses, contacts)
- **🎨 Appearance options** - Rich-text labels, layouts, field widths, CSS classes, stylable HTML5 validation, custom error messages

### 🔍 Validation &amp; Conditions

[](#-validation--conditions)

- **📋 Field-level validation** - Define dual client- and server-side validation with field properties
- **✅ HTML5 validation** - Server validators automatically replicate browser behavior
- **🔬 Custom validators** - Add validators via PSR-14 events
- **👁️ Display conditions** - Show/hide fields based on values or context (client and server-side)

### 🏁 Finishers

[](#-finishers)

- **📧 Send emails** - Template-based emails
- **✉️ Double opt-in** - Email verification flow with finisher re-execution
- **💾 Save submissions** - Store form data in database with JSON values
- **🗄️ Database integration** - Insert/update custom tables
- **➡️ Redirects** - Dynamic redirects after submission
- **📜 Show content** - Display content elements after submission
- **🧩 Modular finishers** - Freely combine and configure finishers

### 🛡️ Security &amp; Spam Protection

[](#️-security--spam-protection)

- **🔒 HMAC-signed sessions** - Secure session persistence between form pages
- **🍯 Honeypot** - Invisible field spam trap
- **👆 Focus Pass** - JavaScript-based bot detection via focus events
- **🤖 Google reCAPTCHA** - Bot protection via reCAPTCHA (WIP)
- **🔌 Custom spam detection** - Extend via SpamAnalysisEvent

### 🔧 Extensibility

[](#-extensibility)

Beyond TCA customization, Shape provides standard extension points:

- **📄 Fluid templates** - Override any template, partial, or layout
- **📡 PSR-14 events** - 10+ events for validation, processing, rendering, finisher execution, etc.
- **🏁 Custom finishers** - Extend AbstractFinisher to implement post-submission actions
- **🛠️ Custom implementations** - Swap out core services via DI configuration

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

[](#-requirements)

- TYPO3 v13.4 or higher
- PHP 8.2 or higher
- Composer

📦 Installation
--------------

[](#-installation)

> **⚠️ Beta Status:** This extension is in beta and does not have a testing suite yet. While it is being used in production, please test thoroughly in your specific environment before deploying to production sites.

```
composer require amdeu/typo3-shape
```

Update database schema via **Admin Tools → Maintenance → Analyze Database Structure** or CLI:

```
vendor/bin/typo3 database:updateschema
```

See [Getting Started](Documentation/GettingStarted.md) for details.

📚 Documentation
---------------

[](#-documentation)

### Getting Started

[](#getting-started)

- **[Getting Started](Documentation/GettingStarted.md)** - Installation and first form
- **[Editor Guide](Documentation/EditorGuide.md)** - Building forms in the backend

### Reference

[](#reference)

- **[Field Reference](Documentation/FieldReference.md)** - Field types, properties, and validation
- **[Finishers Reference](Documentation/Finishers.md)** - All finishers and their settings

### Feature Guides

[](#feature-guides)

- **[Repeatable Field Groups](Documentation/RepeatableContainer.md)** - Dynamic fieldsets
- **[Display Conditions](Documentation/Conditions.md)** - Show/hide fields based on values

### Advanced

[](#advanced)

- **[Customization Guide](Documentation/CustomizationGuide.md)** - TypoScript, templates, events, and custom finishers

License
-------

[](#license)

MIT License - see [LICENSE](LICENSE)

###  Health Score

36

—

LowBetter than 81% of packages

Maintenance81

Actively maintained with recent releases

Popularity5

Limited adoption so far

Community7

Small or concentrated contributor base

Maturity44

Maturing project, gaining track record

 Bus Factor1

Top contributor holds 100% 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 ~15 days

Recently: every ~23 days

Total

7

Last Release

100d ago

PHP version history (2 changes)0.1.0PHP ^8

0.2.0PHP ^8.2

### Community

Maintainers

![](https://www.gravatar.com/avatar/f53ce727276e90c008030208208ebc478a5299634f4c2e37830199e9b0e3925d?d=identicon)[amdeu](/maintainers/amdeu)

---

Top Contributors

[![amdeu](https://avatars.githubusercontent.com/u/48531005?v=4)](https://github.com/amdeu "amdeu (143 commits)")

### Embed Badge

![Health badge](/badges/amdeu-typo3-shape/health.svg)

```
[![Health](https://phpackages.com/badges/amdeu-typo3-shape/health.svg)](https://phpackages.com/packages/amdeu-typo3-shape)
```

###  Alternatives

[eliashaeussler/typo3-form-consent

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

1481.0k](/packages/eliashaeussler-typo3-form-consent)[fluidtypo3/flux

The flux package from FluidTYPO3

152982.2k20](/packages/fluidtypo3-flux)[fluidtypo3/vhs

This is a collection of ViewHelpers for performing rendering tasks that are not natively provided by TYPO3's Fluid templating engine.

1954.1M48](/packages/fluidtypo3-vhs)[friendsoftypo3/content-blocks

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

96374.6k23](/packages/friendsoftypo3-content-blocks)[typo3/testing-framework

The TYPO3 testing framework provides base classes for unit, functional and acceptance testing.

675.0M773](/packages/typo3-testing-framework)[pagemachine/typo3-formlog

Form log for TYPO3

23225.3k6](/packages/pagemachine-typo3-formlog)

PHPackages © 2026

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