PHPackages                             rkw/rkw-form - 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. rkw/rkw-form

ActiveTypo3-cms-extension

rkw/rkw-form
============

Extension for managing forms

v10.4.20-stable(2mo ago)0283GPL-2.0+PHPPHP &gt;=7.4

Since Sep 23Pushed 2mo ago1 watchersCompare

[ Source](https://github.com/RKWKomZe/RkwForm)[ Packagist](https://packagist.org/packages/rkw/rkw-form)[ Docs](https://www.rkw-kompetenzzentrum.de)[ RSS](/packages/rkw-rkw-form/feed)WikiDiscussions master Synced 2mo ago

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

rkw\_form
=========

[](#rkw_form)

What does it do?
----------------

[](#what-does-it-do)

It's sole purpose is form management. On the one hand, it's provides simple forms without a bigger context (Analog to the Ext FormFramework). On the other hand, it's prepared to extend the FormFramework in future with some special functions.

ExtForm Framework base configuration
------------------------------------

[](#extform-framework-base-configuration)

- Needs upload folder fileadmin/user\_upload/tx\_rkwform
- Do not edit the forms in live context via backend. Would be overwritten with every following deployment, because the form definitions are lying in /rkw\_form/Configuration/Yaml/Forms/
- The whole FormExt form we can work with and extend it:

### Available cronjobs

[](#available-cronjobs)

#### RkwForm: FileCleanup

[](#rkwform-filecleanup)

- Because the "Delete uploads" mail finisher only clear uploads of successfully sent forms, we need a cronjob to clear the upload folder
- Argument: "daysFromNow" - Defines which old files should be deleted. Default value: 30 (days)
- Change or add the upload destination here inside the FormFrameworkConf.yaml: TYPO3.CMS.Form.persistenceManager.allowedFileMounts
- Intentional restriction: The cronjob handles multiple filemounts. Condition: The filepath must contain the string "tx\_rkwform"

#### RkwForm: Cleanup

[](#rkwform-cleanup)

- Deletes expired records

#### RkwForm: Security

[](#rkwform-security)

- If no htaccess protection for the given upload folder exists, the cronjob should create one. Take a look to the method "securityCheck"

### Incorporated changes / improvements of the basic ExtForm

[](#incorporated-changes--improvements-of-the-basic-extform)

- HTML5 validation deactivated (no styles available)
- Replacing the bootstrap based "ViewGrid" for every field with simple width property
- Individual form error messages
- h1-h6 options for static text field
- The checkbox field got the property "type" to use it as terms-checkbox. Is bound to the extension FeRegister
- Individual greeting text for every E-Mails (look to the mail finisher of the certain form)
- The mailing is bound to the extension Postmaster for using Header, Footer and its components (images; links) for every E-Mail out of the box
- Attention: The EmailFinisher of the ExtForm is overwritten by /rkw\_form/Classes/Domain/Finishers/EmailFinisher.php
- Hint: To work in fluid with individual form configurations you can use a YAML-reader like it is used here: /rkw\_form/Classes/ViewHelpers/GetFinisherOptionViewHelper.php

### Hints

[](#hints)

- For FE (fluid) translation use "locallang.xlf"
- For BE (yaml) translation use "form\_framework.xlf"
- To understand how to edit the basics of all FormExt forms itself or of it's fields, take a look to the FormFrameworkConf.yaml file. This file defines all BASICS
- To edit a special form you want to display as content element, you should use the backend module "Forms". But you can also directly change it via /rkw\_forms/configuration/Yaml/Forms/YourForm
- Hint: Directly changed form definitions in yaml can be overwritten directly on saving the given form in the TYPO3 backend

Add new forms (not using FormFramework)
---------------------------------------

[](#add-new-forms-not-using-formframework)

- All you need to know: One form is one plugin. Show following content only if you need further instructions

### Create new form WITHOUT extend the form database table (show extended using below)

[](#create-new-form-without-extend-the-form-database-table-show-extended-using-below)

- ext\_localconf: Create the new form plugin. Further down we're creating also the necessary "ExampleController"

```
\TYPO3\CMS\Extbase\Utility\ExtensionUtility::configurePlugin(
    'RKW.RkwForm',
    'ExampleForm',
    [
        'ExampleForm' => 'new, create'
    ],
    // non-cacheable actions
    [
        'ExampleForm' => 'new, create'
    ]
);

```

- TCA/override/tt\_content: Register the new form plugin

```
\TYPO3\CMS\Extbase\Utility\ExtensionUtility::registerPlugin(
    'RKW.RkwForm',
    'ExampleForm',
    'RKW Form: Example Formular'
);

```

- TCA/override/tt\_content: Use the standard flexform. Just add your new plugin name to the array

```
$pluginList = ['StandardForm', 'ExampleForm'];

```

- Controller: Create a new controller which extends the AbstractFormController (for possible individual purpose)

```
class ExampleFormController extends \RKW\RkwForm\Controller\AbstractFormController

```

- Controller: Add the createAction and call the parents "createAbstractAction", because the AbstractController can't handle the individual form contents directly by using the AbstractEntity (missing getter &amp; setter)

```
/**
 * action create
 *
 * @param \RKW\RkwForm\Domain\Model\StandardForm $standardForm
 * @param int $privacy
 * @TYPO3\CMS\Extbase\Annotation\Validate("RKW\RkwForm\Validation\Validator\AbstractFormValidator", param="standardForm")
 * @return void
 */
public function createAction(BstForm $standardForm, $privacy = 0): void
{
    // my example code, which is different to the createActractAction of the AbstractController

    parent::createAbstractAction($standardForm, $privacy);
}

```

- TypoScript: Define your plugins individual mandatory fields (in CONSTANTS &amp; SETUP)
- HINT: SK has changed the logic. You have to create an own validator for every form

```
// ####################
// ExampleForm
// ####################
plugin.tx_rkwform_exampleform < plugin.tx_rkwform
plugin.tx_rkwform_exampleform {
    settings {
        mandatoryFields {
            standard = {$plugin.tx_rkwform_exampleform.settings.mandatoryFields.standard}
        }
    }
}

```

- Resources: Create you individual templates and partials
- Validation: You have NEVER need to rewrite the AbstractFormValidator, until you have some special needs
- Mailing: You have NEVER need to overwrite, extend oder change the PHP-based mail parts, until you have some special needs

### EXTENDED: If you need to extend the form table

[](#extended-if-you-need-to-extend-the-form-table)

- ext\_tables.sql: Extend form fields, if necessary. Please check before if the standard form fields are already enough

```
#
# extend for exampleForm
#
CREATE TABLE tx_rkwform_domain_model_standardform (
  exmpl1 int(11) DEFAULT '0' NOT NULL,
  exmpl2 int(11) DEFAULT '0' NOT NULL,
  exmpl3 int(11) DEFAULT '0' NOT NULL,
  exmpl4 tinyint(4) unsigned DEFAULT '0' NOT NULL,
);

```

- TCA: Add contents by overriding TCA/Overrides/tx\_rkwform\_domain\_model\_standardform

```
class ExampleForm extends \RKW\RkwForm\Domain\Model\StandardForm

```

- Model: Create Model

```
class ExampleForm extends \RKW\RkwForm\Domain\Model\StandardForm

```

- Repository: Create Repository

```
class ExampleFormRepository extends \TYPO3\CMS\Extbase\Persistence\Repository

```

- Locallang: Create all necessary language contents (also form errors!!)
- BE

```

    Number 1
    Pers. Zahlenkomb. 1

    Number 2
    Pers. Zahlenkomb. 2

    Number 3
    Pers. Zahlenkomb. 3

    Agree
    Zustimmung

    Example
    Beispiel

    Example
    Beispiel

```

- FE

```

    Number combination 1
    Zahlenkombination Feld 1

    Number combination 2
    Zahlenkombination Feld 2

    Number combination 3
    Zahlenkombination Feld 3

    Message
    Nachricht

```

- E-Mail: Keep in mind, that this form ext ist mainly working with and trough emails. So add your new fields to /ext/rkw\_form/Resources/Private/Partials/Email/Details.html

###  Health Score

50

—

FairBetter than 95% of packages

Maintenance90

Actively maintained with recent releases

Popularity12

Limited adoption so far

Community10

Small or concentrated contributor base

Maturity73

Established project with proven stability

 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

Every ~35 days

Recently: every ~49 days

Total

67

Last Release

80d ago

Major Versions

v8.7.63-stable → v9.5.0-stable2023-02-24

v8.7.66-stable → v9.5.2-stable2023-06-29

v9.5.1000-stable → v10.4.0-stable2024-04-19

v9.5.1001-stable → v10.4.1-stable2024-09-30

v9.5.1002-stable → v10.4.2-stable2024-09-30

PHP version history (2 changes)v7.6.0-betaPHP &gt;=5.6

v9.5.0-stablePHP &gt;=7.4

### Community

Maintainers

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

---

Top Contributors

[![addorange](https://avatars.githubusercontent.com/u/1980618?v=4)](https://github.com/addorange "addorange (109 commits)")[![skroggel](https://avatars.githubusercontent.com/u/8121847?v=4)](https://github.com/skroggel "skroggel (87 commits)")[![MaxFaessler](https://avatars.githubusercontent.com/u/45080955?v=4)](https://github.com/MaxFaessler "MaxFaessler (68 commits)")

---

Tags

FormsTYPO3 CMSRKW

### Embed Badge

![Health badge](/badges/rkw-rkw-form/health.svg)

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

PHPackages © 2026

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