PHPackages                             tollwerk/tw-forms - 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. tollwerk/tw-forms

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

tollwerk/tw-forms
=================

TYPO3 extension for enhancing native forms

v2.0.0(1mo ago)12.3k↓61.3%1[5 issues](https://github.com/tollwerk/TYPO3-ext-tw_forms/issues)MITHTML

Since Jun 30Pushed 1w ago3 watchersCompare

[ Source](https://github.com/tollwerk/TYPO3-ext-tw_forms)[ Packagist](https://packagist.org/packages/tollwerk/tw-forms)[ Docs](https://tollwerk.de)[ RSS](/packages/tollwerk-tw-forms/feed)WikiDiscussions main Synced yesterday

READMEChangelog (10)Dependencies (9)Versions (23)Used By (0)

tw-forms — Tollwerk Enhanced TYPO3 Forms
========================================

[](#tw-forms--tollwerk-enhanced-typo3-forms)

[![TYPO3](https://camo.githubusercontent.com/ef75ce88f9408b5a39b715842281c2f86bd2d39c64afa899687186e48bc4e82d/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f5459504f332d31332e342d677265656e2e737667)](https://get.typo3.org/version/12)[![License](https://camo.githubusercontent.com/08cef40a9105b6526ca22088bc514fbfdbc9aac1ddbf8d4e6c750e3a88a44dca/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f4c6963656e73652d4d49542d626c75652e737667)](https://opensource.org/licenses/MIT)

A TYPO3 extension that enhances the native TYPO3 Form Framework with improved validation, better accessibility, and an enhanced user experience.

Features
--------

[](#features)

**tw-forms** extends forms in TYPO3 to provide:

### Accessible Forms

[](#accessible-forms)

- **Accessible Forms**: Meets WCAG 2.1 requirements with proper ARIA attributes, keyboard navigation, screen reader support and focus management
- **Enhanced Validation**: Client- and server-side validation with accessible, user-friendly error messages
- **Improved UX**: Real-time validation after first submit / next navigation, error summaries with direct links to invalid fields, and multistep form support
- **Multi-language Support**: English and German included
- **NEW in v1.0.0**: Optional Powermail integration

### Validation Overview

[](#validation-overview)

- **Client-side validation (JavaScript):** Instant feedback using native HTML5 validators
- **Real-time validation (JavaScript):** Triggered after the first submission or page navigation
- **Server-side validation (PHP):** Always executed for security and integrity

### Supported Form Field Types

[](#supported-form-field-types)

Tested and supported form field types with enhanced rendering and accessibility.

#### TYPO3 Form Framework

[](#typo3-form-framework)

- `Text`
- `Textarea`
- `Email address`
- `Telephone number`
- `Checkbox`
- `Multi Checkbox`
- `Radio button`
- `Single Select`
- `Number`
- `URL`
- `Content Element`
- `Static Text`

#### Powermail Integration

[](#powermail-integration)

Tested and supported form field types with enhanced rendering:

- `Input`
- `Textarea`
- `Check` (Single and Multi)
- `Radio`
- `Content`
- `Text`
- `Select`

Requirements
------------

[](#requirements)

- **TYPO3**: 12.4 or higher
- **PHP**: 8.0 or higher
- **Composer**: 2.x

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

[](#installation)

### 1. Install via Composer

[](#1-install-via-composer)

```
composer require tollwerk/tw-forms
```

### 2. Activate the Extension

[](#2-activate-the-extension)

Activate the extension in the TYPO3 Extension Manager or via CLI:

```
vendor/bin/typo3 extension:activate tw_forms
```

### 3. Include Static TypoScript

[](#3-include-static-typoscript)

1. Go to the **Web → Template** module
2. Select your root page
3. Click **Edit the whole template record**
4. Go to the **Includes** tab
5. Add **"Tollwerk Enhanced TYPO3 forms (tw\_forms)"** to the selected items

### 4. Clear Caches

[](#4-clear-caches)

```
vendor/bin/typo3 cache:flush
```

Or use the TYPO3 backend: **Admin Tools → Flush all caches**

Configuration
-------------

[](#configuration)

### Essential CSS Classes

[](#essential-css-classes)

Client-side validation depends on specific CSS classes automatically applied via `CustomFormSetup.yaml` (Form Framework) and `tx_powermail.typoscript` (Powermail):

ClassPurpose`.Form.Form--custom-validation`Enables client-side validation`.FormField__input`Applied to text inputs, selects, etc.`.FormField__textarea`Applied to textarea elements`.FormField__group-element`For grouped inputs (checkboxes, radios)For styling purposes, there are custom checkboxes and radio buttons implemented. These follow Sara Soueidan's [Inclusively Hiding &amp; Styling Checkboxes and Radio Buttons](https://www.sarasoueidan.com/blog/inclusively-hiding-and-styling-checkboxes-and-radio-buttons/).

ClassPurpose`.CustomInput.CustomInput--check`Checkbox`.CustomInput.CustomInput--radio`Radio buttonPre-configured in:

- **Form Framework:** `Configuration/Yaml/CustomFormSetup.yaml`
- **Powermail:** `Configuration/TypoScript/Setup/Plugin/tx_powermail.typoscript`

### Accessibility Recommendations

[](#accessibility-recommendations)

#### Autocomplete Attributes

[](#autocomplete-attributes)

Always include `autocomplete` attributes to meet WCAG 2.1 requirements.

Common values:

- `name` — Full name
- `email` — Email address
- `tel` — Phone number
- `street-address` — Street address
- `postal-code` — Postal/ZIP code

**Full list:** [WCAG 2.1 Input Purposes](https://www.w3.org/TR/WCAG21/#input-purposes)

##### Form Framework

[](#form-framework)

In your form definition file:

```
properties:
  fluidAdditionalAttributes:
    required: required
    autocomplete: name  # See WCAG 2.1 input purposes
```

##### Powermail

[](#powermail)

Powermail doesn’t support autocomplete attributes natively.
Use `Powermail Autocomplete` by [Thomas Rawiel](https://extensions.typo3.org/extension/powermailautocomplete).

The extension adds a backend field for the autocomplete attribute to the form element.

1. Open the form element
2. Go to the **Extended** tab
3. Under **Autocomplete options**, set **Field type** `[autocomplete_token]`

#### Placeholders

[](#placeholders)

- Do not use placeholders as labels.
- They disappear during input, are inconsistently announced by screen readers, and often fail contrast requirements.
- Use them only for format hints (e.g. `´).

#### Descriptions

[](#descriptions)

Add meaningful descriptions for fields that expect specific formats or have strict validation (e.g. “Please enter at least 8 characters.”)

#### Custom Error Messages

[](#custom-error-messages)

Specific error messages add benefit to the accessibility and user experience of a form. The more precisely it describes what and how the user can do to fix the error, the better.

Custom error messages can only be added in the native TYPO3 form framework, either in the backend or the form definition file:

```
properties:
  validationErrorMessages:
    -
      code: 1221560910  # NotEmpty validator
      message: 'Please enter your name.'
    -
      code: 1221559976  # EmailAddress validator
      message: 'Please enter a valid email address.'
```

Customization
-------------

[](#customization)

### Disable Client-Side Validation

[](#disable-client-side-validation)

If you only want server-side validation:

```
page.includeJSLibs.tw_forms_critical >
page.includeJSFooter.tw_forms_default >

```

### Custom CSS Styling

[](#custom-css-styling)

Override the default styles by including your own CSS after the extension CSS:

```
page.includeCSS {
    tw_forms = EXT:tw_forms/Resources/Public/Css/twforms.css
    my_custom_forms = EXT:my_sitepackage/Resources/Public/Css/forms.css
}

```

Supported Languages
-------------------

[](#supported-languages)

- English (default)
- German

Translation files are located in `Resources/Private/Language/`.

### Powermail

[](#powermail-1)

For Powermail setups, translations for error messages are defined directly in the `tx_powermail.typoscript` file.

Known Limitations
-----------------

[](#known-limitations)

- Client-side validation currently only supports:
    - Required fields
    - Email format
    - String length (min/max)
    - Number validation
    - Custom regex patterns
- Advanced PHP validators from the TYPO3 Form Framework (that have no native HTML5 equivalents) are not yet supported client-side and will only be executed server-side.

Troubleshooting
---------------

[](#troubleshooting)

IssuePossible Fixes**Forms not rendering**Ensure static TypoScript is included, check YAML syntax, clear caches**JS validation not working**Check browser console, verify JS assets load, ensure required CSS classes exist**Validation errors not visible**Confirm validators are configured, check translation files, enable TYPO3 debug modeDevelopment
-----------

[](#development)

See the **[Developer Documentation](DEVELOPER_DOCUMENTATION.md)** for:

- Extension structure and architecture
- Creating custom ViewHelpers
- Adding custom validators
- Extending JavaScript validation
- Creating new form element types
- PHP / JavaScript coding standards
- Testing guidelines

Support
-------

[](#support)

- **Issue Tracker**: Report bugs or request features on your project's issue tracker
- **Documentation**: [Developer Documentation](DEVELOPER_DOCUMENTATION.md)
- **TYPO3 Documentation**: [Form Framework](https://docs.typo3.org/c/typo3/cms-form/main/en-us/)
- **Accessibility**: [WCAG 2.1 Guidelines](https://www.w3.org/TR/WCAG21/)

Credits
-------

[](#credits)

- **Developer**: Klaus Fiedler, Sophie Brunner
- **Organization**: tollwerk GmbH
- **Website**:
- **License**: MIT

License
-------

[](#license)

This extension is licensed under the MIT License. See the LICENSE file for details.

---

**Version**: 2.0.x **TYPO3 Compatibility**: 13.4 **Last Updated**: 2026-05-21

###  Health Score

44

—

FairBetter than 90% of packages

Maintenance75

Regular maintenance activity

Popularity23

Limited adoption so far

Community11

Small or concentrated contributor base

Maturity54

Maturing project, gaining track record

 Bus Factor1

Top contributor holds 81.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 ~72 days

Recently: every ~58 days

Total

16

Last Release

11d ago

Major Versions

v0.1.4 → v1.0.02025-09-09

v1.1.1 → v2.0.02026-05-21

### Community

Maintainers

![](https://www.gravatar.com/avatar/9654aeebce6e58572ec7ee6e8b30a2f8f41a54a3c7a9580d1df090996f5cfdbb?d=identicon)[jkphl](/maintainers/jkphl)

---

Top Contributors

[![kftw](https://avatars.githubusercontent.com/u/8362710?v=4)](https://github.com/kftw "kftw (48 commits)")[![sophiebrunner](https://avatars.githubusercontent.com/u/95913912?v=4)](https://github.com/sophiebrunner "sophiebrunner (11 commits)")

---

Tags

Formstypo3form framework

### Embed Badge

![Health badge](/badges/tollwerk-tw-forms/health.svg)

```
[![Health](https://phpackages.com/badges/tollwerk-tw-forms/health.svg)](https://phpackages.com/packages/tollwerk-tw-forms)
```

###  Alternatives

[typo3/cms-styleguide

TYPO3 extension to showcase TYPO3 Backend capabilities

106760.3k33](/packages/typo3-cms-styleguide)[7elix/styleguide

TYPO3 extension to showcase TYPO3 Backend capabilities

10727.3k](/packages/7elix-styleguide)[pagemachine/typo3-formlog

Form log for TYPO3

23238.6k8](/packages/pagemachine-typo3-formlog)[friendsoftypo3/content-blocks

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

103519.9k53](/packages/friendsoftypo3-content-blocks)[wazum/sluggi

TYPO3 extension for URL slug management with inline editing, auto-sync, locking, access control, and redirects

40529.5k](/packages/wazum-sluggi)[t3sbs/t3sbootstrap

Startup extension to use bootstrap 5 classes, components and more out of the box. Example and info: \[www.t3sbootstrap.de\](https://www.t3sbootstrap.de)

2416.4k](/packages/t3sbs-t3sbootstrap)

PHPackages © 2026

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