PHPackages                             fab/formule - 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. [Templating &amp; Views](/categories/templating)
4. /
5. fab/formule

ActiveTypo3-cms-extension[Templating &amp; Views](/categories/templating)

fab/formule
===========

Render a variety of forms template based on the FE such as contact form, registration form, etc... effortless!

5.0.0(5mo ago)316.2k↓100%GPL-2.0-or-laterPHP

Since Apr 8Pushed 2mo ago5 watchersCompare

[ Source](https://github.com/Ecodev/formule)[ Packagist](https://packagist.org/packages/fab/formule)[ Docs](https://github.com/Ecodev/formule)[ RSS](/packages/fab-formule/feed)WikiDiscussions develop Synced 1mo ago

READMEChangelogDependencies (2)Versions (31)Used By (0)

Formule for TYPO3 CMS
=====================

[](#formule-for-typo3-cms)

Template based, render a variety of forms such as contact form, registration form, etc... effortless!

Consider these minimum steps to display a form and start submitting data:

- Create a content element of type "formule" in the Backend.
- Add some TypoScript configuration to declare a new HTML template.
- Adjust your template in particular the form. Use a form generator of your choice.
- Your form is basically ready.

Compatibility and Maintenance
-----------------------------

[](#compatibility-and-maintenance)

This package is currently maintained for the following versions:

TYPO3 VersionPackage VersionBranchMaintainedTYPO3 11.5.x4.xmasterYesTYPO3 10.4.x3.x-NoTYPO3 8.x2.x-NoTYPO3 7.x1.x-NoProject info and releases
-------------------------

[](#project-info-and-releases)

Development version:

```
git clone https://github.com/Ecodev/formule.git
```

News about latest development are also announced on

Installation and requirement
============================

[](#installation-and-requirement)

Download the extension as normal in the Extension Manager or via Composer:

```
composer require "fab/formule"
```

Install the extension in the Extension Manager. You are almost there! Create a Content Element of type "formule" in `General Plugin` &gt; `Variety of forms` and configure at your convenience.

[![](https://raw.githubusercontent.com/Ecodev/formule/master/Documentation/Backend-01.png)](https://raw.githubusercontent.com/Ecodev/formule/master/Documentation/Backend-01.png)

Configuration
=============

[](#configuration)

The plugin can be configured mainly in TypoScript. In the Extension Manager possible email redirection can be set according to the Application Context. This maybe useful when developing to avoid sending email to the final user.

Register a new template
-----------------------

[](#register-a-new-template)

By default the extension provides a limited set of forms: a basic mail form along with a newsletter registration example. It is very likely you want to add new ones. To register a new template and see it in the plugin record, consider the two necessary steps:

- Create a new HTML template `EXT:foo/Resources/Private/Plugins/Formule/MyForm.html`. You can take inspiration from the one in `EXT:formule`.
- Add some minimum TypoScript settings, e.g. in `EXT:foo/Configuration/TypoScript/Plugin/tx_formule.ts`

```

	plugin.tx_formule {
		settings {
			templates {

				# Key "1", "2" is already taken by the extension.
				# Use key "10", "11" and following for your own templates to be safe.
				10 {
					title = Foo detail view
					path = EXT:foo/Resources/Private/Templates/formule/ContactForm.html

				}
			}
		}
	}

```

Load additional assets
----------------------

[](#load-additional-assets)

Below is a more complex example which will load additional JS / CSS. This TypoScript could be written placed in a file, e.g. in `EXT:foo/Configuration/TypoScript/Plugin/tx_formule.ts`

```

    plugin.tx_formule.settings.template.11 {

        title = Newsletter subscription new
        path = EXT:foo/Resources/Private/Standalone/Newsletter/NewSubscription.html

        # Load custom assets
        asset {

            0 {
                path = EXT:foo/Resources/Public/Build/StyleSheets/formule.css
                type = css

                # Optional key if loading assets through EXT:vhs.
                dependencies = mainCss
            }

            1 {
                path = EXT:foo/Resources/Public/Build/JavaScript/formule..js
                type = js

                # Optional key if loading assets through EXT:vhs.
                dependencies = mainJs
            }
        }
    }

```

Persist to the database
-----------------------

[](#persist-to-the-database)

One can also set a configuration to persist submitted data into the database. This TypoScript could be written placed in a file, e.g. in `EXT:foo/Configuration/TypoScript/Plugin/tx_formule.ts`

```

    plugin.tx_formule.settings.template.11 {

        title = Newsletter subscription new
        path = EXT:foo/Resources/Private/Standalone/Newsletter/NewSubscription.html

        # Persist configuration
        persist {
            tableName = fe_users

            defaultValues {
                pid = 1
                disable = 1
            }

            # Possibly process the values
            processors {
                0 = Fab\Formule\Processor\UserDataProcessor
            }

            mappings {
                # Left value corresponds to name in the form: name="firstName"
                # Right value corresponds to field name: fe_users.first_name
                #first_name = first_name
            }
        }
    }

```

Loading data
------------

[](#loading-data)

To pre-load data and inject values in the form, one can configure loaders. A Loader corresponds to a PHP class where one can fetch some data and return an array of values.

```

    plugin.tx_formule.settings.template.11 {

        title = Newsletter subscription new
        path = EXT:foo/Resources/Private/Standalone/Newsletter/NewSubscription.html

        loaders {
            0 = Fab\Formule\Loader\UserDataLoader
        }

    }

```

Finishers
---------

[](#finishers)

Finisher actions let you finalize the submit of your form and do whatever action is necessary. Your own finisher class must implement FinisherInterface.

```

    plugin.tx_formule.settings.template.11 {

        title = Newsletter subscription new
        path = EXT:foo/Resources/Private/Standalone/Newsletter/NewSubscription.html

        finishers {
            0 = Fab\Formule\Finisher\FooFinisher
        }

    }

```

HTML template
-------------

[](#html-template)

The template has the bare minimum requirements. A Fluid form must be declared sending its content to action "submit". It is has one required field to retrieve the original Content element configuration ``. Formule has a mechanism to read and analyse the content. From that, it will extract allowed fields and mandatory values. Notice the basic structure with the inline comments.

```

```

Sections in template
--------------------

[](#sections-in-template)

The template can be

```

    # Required section

        Content of the template

```

This section is optional and is to define the body part of the email to the admin. If present if will replace the value from the flexform.

```

```

Same as above but for the end user. If present if will replace the value from the flexform.

```

```

This section is optional and is to define the feedback message for the end user after successfully submitting the form.

```

```

Template variable
-----------------

[](#template-variable)

For convenience sake, the extension provides a bunch of global variables than can be used across emails (subject or body part):

- {HTTP\_HOST} : [www.example.org](http://www.example.org)
- {HTTP\_REFERER} :

Fields control
--------------

[](#fields-control)

- The extension ships a honeypot View Helper to reduce bot annoyances.
- The fields marked as `required="required"` will be extracted and controlled as such.
- Todo: we could introduce the HTML5 attribute `pattern=""` for better field control (not yet implemented).

###  Health Score

54

—

FairBetter than 97% of packages

Maintenance86

Actively maintained with recent releases

Popularity26

Limited adoption so far

Community15

Small or concentrated contributor base

Maturity74

Established project with proven stability

 Bus Factor1

Top contributor holds 90.9% 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 ~135 days

Recently: every ~315 days

Total

27

Last Release

163d ago

Major Versions

0.9.2 → 1.0.02016-08-17

1.3.2 → 2.0.02019-04-04

2.4.0 → 3.0.02021-08-13

3.0.3 → 4.0.02022-06-14

4.0.3 → 5.0.02025-11-27

### Community

Maintainers

![](https://www.gravatar.com/avatar/9df52765d70098f094d02c41a2fda5b108b30ba7e58383dd79c5eda0f286dd21?d=identicon)[fudriot](/maintainers/fudriot)

---

Top Contributors

[![fabarea](https://avatars.githubusercontent.com/u/620730?v=4)](https://github.com/fabarea "fabarea (209 commits)")[![compaoreh338](https://avatars.githubusercontent.com/u/131278191?v=4)](https://github.com/compaoreh338 "compaoreh338 (12 commits)")[![stucki](https://avatars.githubusercontent.com/u/320916?v=4)](https://github.com/stucki "stucki (5 commits)")[![stissot](https://avatars.githubusercontent.com/u/869941?v=4)](https://github.com/stissot "stissot (2 commits)")[![Lebeau09](https://avatars.githubusercontent.com/u/162180980?v=4)](https://github.com/Lebeau09 "Lebeau09 (1 commits)")[![PowerKiKi](https://avatars.githubusercontent.com/u/72603?v=4)](https://github.com/PowerKiKi "PowerKiKi (1 commits)")

---

Tags

formtypo3typo3-extensionformTYPO3 CMS

### Embed Badge

![Health badge](/badges/fab-formule/health.svg)

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

###  Alternatives

[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)[bk2k/bootstrap-package

Bootstrap Package delivers a full configured frontend theme for TYPO3, based on the Bootstrap CSS Framework.

357891.4k72](/packages/bk2k-bootstrap-package)[mask/mask

Create your own content elements and page templates. Easy to use, even without programming skills because of the comfortable drag and drop user interface. Stored in structured database tables. Style your frontend with Fluid tags. Ideal, if you want to switch from Templavoila.

1391.6M10](/packages/mask-mask)

PHPackages © 2026

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