sgalinski / sg-forms
Enhances TYPO3 EXT:form with repeatable containers, linked checkboxes, custom field identifiers, PDF form filling, submission storage with backend/CLI CSV export, upload rename and cleanup workflows, form translation handling, and layered spam protection (ALTCHA, Friendly Captcha, reCAPTCHA, honeypo
Package info
gitlab.sgalinski.de/typo3/sg_forms.git
Type:typo3-cms-extension
pkg:composer/sgalinski/sg-forms
Requires
- altcha-org/altcha: ^1.0
- mikehaertl/php-pdftk: ^0.14.2
- sgalinski/sg-ajax: >=5.0.0
- typo3/cms-core: ^13.4.0
- typo3/cms-form: ^13.4.0
Suggests
- sgalinski/sg-mail: Optional: send form submission exports by email.
Replaces
- sgalinski/sg_forms: 7.4.1
- dev-master
- 7.4.1
- 7.4.0
- 7.3.9
- 7.3.8
- 7.3.7
- 7.3.6
- 7.3.5
- 7.3.4
- 7.3.3
- 7.3.2
- 7.3.1
- 7.3.0
- 7.2.1
- 7.2.0
- 7.1.18
- 7.1.17
- 7.1.16
- 7.1.15
- 7.1.14
- 7.1.13
- 7.1.12
- 7.1.11
- 7.1.10
- 7.1.9
- 7.1.8
- 7.1.7
- 7.1.6
- 7.1.5
- 7.1.4
- 7.1.3
- 7.1.2
- 7.1.1
- 7.1.0
- 7.0.4
- 7.0.3
- 7.0.2
- 7.0.1
- 7.0.0
- v6.x-dev
- 6.3.12
- 6.3.11
- 6.3.10
- 6.3.9
- 6.3.8
- 6.3.7
- 6.3.6
- 6.3.5
- 6.3.4
- 6.3.3
- 6.3.2
- 6.3.1
- 6.3.0
- 6.2.0
- 6.1.9
- 6.1.8
- 6.1.7
- 6.1.6
- 6.1.5
- 6.1.4
- 6.1.3
- 6.1.2
- 6.1.1
- 6.1.0
- 6.0.1
- 6.0.0
- v5.x-dev
- 5.0.14
- 5.0.13
- 5.0.12
- 5.0.11
- 5.0.10
- 5.0.9
- 5.0.8
- 5.0.7
- 5.0.6
- 5.0.5
- 5.0.4
- 5.0.3
- 5.0.2
- 5.0.1
- 5.0.0
- 4.3.17
- 4.3.16
- 4.3.15
- 4.3.14
- 4.3.13
- 4.3.12
- 4.3.10
- 4.3.9
- 4.3.8
- 4.3.7
- 4.3.6
- 4.3.5
- 4.3.4
- 4.3.3
- 4.3.2
- 4.3.1
- 4.3.0
- 4.2.2
- 4.2.1
- 4.2.0
- 4.1.9
- 4.1.8
- 4.1.7
- 4.1.6
- 4.1.5
- 4.1.4
- 4.1.3
- 4.1.1
- 4.1.0
- v4.0.x-dev
- 4.0.16
- 4.0.15
- 4.0.14
- 4.0.13
- 4.0.12
- 4.0.11
- 4.0.10
- 4.0.9
- 4.0.8
- 4.0.7
- 4.0.6
- 4.0.5
- 4.0.4
- 4.0.3
- 4.0.2
- 4.0.1
- 4.0.0
- 3.8.11
- 3.8.10
- 3.8.9
- 3.8.8
- 3.8.7
- 3.8.6
- 3.8.5
- 3.8.4
- 3.8.3
- 3.8.2
- 3.8.1
- 3.8.0
- 3.7.4
- 3.7.3
- 3.7.2
- 3.7.1
- 3.7.0
- 3.6.5
- 3.6.4
- 3.6.3
- 3.6.2
- 3.6.1
- 3.6.0
- 3.5.3
- 3.5.2
- 3.5.1
- 3.5.0
- 3.4.0
- 3.3.0
- 3.2.1
- 3.2.0
- 3.1.7
- 3.1.6
- 3.1.5
- 3.1.4
- 3.1.3
- 3.1.2
- 3.1.1
- 3.1.0
- v3.0.x-dev
- 3.0.16
- 3.0.15
- 3.0.14
- 3.0.13
- 3.0.12
- 3.0.11
- 3.0.10
- 3.0.9
- 3.0.8
- 3.0.7
- 3.0.6
- 3.0.5
- 3.0.4
- 3.0.3
- 3.0.2
- 3.0.1
- 3.0.0
- 2.5.1
- 2.5.0
- 2.4.0
- 2.3.2
- 2.3.1
- 2.3.0
- 2.2.0
- 2.1.1
- 2.1.0
- 2.0.1
- 2.0.0
- 1.6.11
- 1.6.10
- 1.6.9
- 1.6.8
- 1.6.7
- 1.6.6
- 1.6.5
- 1.6.4
- 1.6.3
- 1.6.2
- 1.6.1
- 1.6.0
- 1.5.0
- 1.4.2
- 1.4.1
- 1.4.0
- 1.3.1
- 1.3.0
- 1.2.9
- 1.2.8
- 1.2.7
- 1.2.6
- 1.2.5
- 1.2.4
- 1.2.3
- 1.2.2
- 1.2.1
- 1.2.0
- 1.1.0
- 1.0.3
- 1.0.2
- 1.0.1
- 1.0.0
- dev-feature_sg-forms-pdf
- dev-upgrade_v14
This package is auto-updated.
Last update: 2026-05-13 14:51:38 UTC
README
License: GNU GPL, Version 2
Repository: https://gitlab.sgalinski.de/typo3/sg_forms
Please report bugs here: https://gitlab.sgalinski.de/typo3/sg_forms
About
This extension provides additional functionality for the forms extension
Setup
Setup custom forms storage
All you need to be able to store the form yaml files in our project theme is to create the following folder: web/typo3conf/ext/project_theme/Resources/Private/Forms**
Don't forget to include the Typoscript in your template!
Invisible Recaptcha
You need to integrate lib.settings.reCaptchaSiteKey and lib.settings.reCaptchaSecretKey in your page template, to
get the invisible recaptcha working.
Important
You also have to include the JavaScript of the FormRequiringAction JavaScript module introduced in V5. Check how to use it in its documentation.
ALTCHA Proof of work
ALTCHA PoW is automatically added when checking the "Use ALTCHA" checkbox inside the form settings.
The widget fetches challenges via challengeurl from an uncached ajax endpoint, so cached form markup does not reuse
expired challenge payloads.
ALTCHA Spam Filter
ALTCHA is automatically added if you have API key. You need to add API Key and API Url in your page template, to get the ALTCHA Spam Filter working. API Key and url can be set in
PDF Finisher
The PdfFinisher can fill an existing PDF form with submitted form values and optionally attach it to admin/user mails.
Filling PDF forms requires mikehaertl/php-pdftk and a working pdftk binary on the server.
For local DDEV environments, make sure pdftk is installed in the web container via .ddev/config.yaml:
webimage_extra_packages: [ build-essential, python3, pdftk]
In the form editor:
- Add the
Fill PDF with form valuesfinisher. - Select a PDF template file (
sys_filewith AcroForm fields). - Click
Load PDF fieldsto import all PDF field names into the mapping table. - Map each imported PDF field to a TYPO3 form field identifier (
Text,Textarea,Email,Checkbox,LinkedCheckbox,RadioButton,SingleSelect,MultiSelect,CountrySelect) or to a virtual value (CURRENT_DATE,CURRENT_TIME,CURRENT_DATETIME,CURRENT_TIMESTAMP). - Optionally enable
Start generated PDF download on confirmation page (one-time, deletes file after first access)to automatically trigger the PDF download after submit. Flatten generated PDF (make it non-editable)is enabled by default. Disable it if you want to keep output fields editable/highlighted.
For checkbox/radio/select mappings, the PDF field name and PDF export value definitions must match the TYPO3 values you submit (for example the selected radio option value). The editor currently does not enforce type compatibility, so integrators/editors need to ensure the mapping is semantically correct.
Generated PDFs are stored in fileadmin/sg_forms/Temp/PdfAttachments. The frontend download link uses a temporary token
(default TTL: 1 hour) and is consumed on first valid access. On this first access, the generated PDF is streamed and then
deleted. Integrators should still schedule cleanup for this directory, because generated PDFs can remain there when no
frontend download is rendered/clicked, for example when PDFs are only attached to emails. The existing cleanup command can
be used for this:
vendor/bin/typo3 sgforms:deleteOldUploads /fileadmin/sg_forms/Temp/PdfAttachments 1
Adjust the maximum age to the project's retention requirements.
Extension Configuration
Toggle Translation Grouping
By default, the backend module groups translated form definitions under their parent form. If you want to disable this behavior and see all form definitions as separate entries (e.g., in multi-site setups with separate language handling), you can toggle this behavior in the extension configuration of sg_forms in the TYPO3 Backend.
The setting groupTranslations can be found in the extension configuration under the "general" category.