first commit

This commit is contained in:
salam committed 2026-10-19 08:18:39 +02:00
commit 1218dd1517
12716 files changed
+989233

No files matched your search

@@ -0,0 +1,8 @@
getRootForm()
'''''''''''''
Get the root form the element belongs to.
Signature::
public function getRootForm(): FormDefinition
@@ -0,0 +1,8 @@
setIdentifier()
'''''''''''''''
Set the identifier of the form element.
Signature::
public function setIdentifier(string $identifier);
@@ -0,0 +1,8 @@
setLabel()
''''''''''
Set the label of the form element.
Signature::
public function setLabel(string $label);
@@ -0,0 +1,9 @@
setOptions()
''''''''''''
Set multiple properties of this object at once.
Every property which has a corresponding set* method can be set using the passed $options array.
Signature::
public function setOptions(array $options);
@@ -0,0 +1,9 @@
addElement()
''''''''''''
Add a new form element at the end.
Instead of this method, you should use ``createElement`` instead.
Signature::
public function addElement(FormElementInterface $formElement);
@@ -0,0 +1,8 @@
getElements()
'''''''''''''
Get the child form elements.
Signature::
public function getElements(): array;
@@ -0,0 +1,8 @@
getElementsRecursively()
''''''''''''''''''''''''
Returns all RenderableInterface instances of this composite renderable recursively.
Signature::
public function getElementsRecursively(): array;
@@ -0,0 +1,9 @@
moveElementAfter()
''''''''''''''''''
Move FormElement $elementToMove after $referenceElement.
Both $elementToMove and $referenceElement must be direct descendants of this Section/Page.
Signature::
public function moveElementAfter(FormElementInterface $elementToMove, FormElementInterface $referenceElement);
@@ -0,0 +1,9 @@
moveElementBefore()
'''''''''''''''''''
Move FormElement $elementToMove before $referenceElement.
Both $elementToMove and $referenceElement must be direct descendants of this Section/Page.
Signature::
public function moveElementBefore(FormElementInterface $elementToMove, FormElementInterface $referenceElement);
@@ -0,0 +1,8 @@
removeElement()
'''''''''''''''
Remove $elementToRemove from this Section/Page.
Signature::
public function removeElement(FormElementInterface $elementToRemove);
@@ -0,0 +1,8 @@
addValidator()
''''''''''''''
Registers a validator for the form element.
Signature::
public function addValidator(ValidatorInterface $validator);
@@ -0,0 +1,8 @@
createValidator()
'''''''''''''''''
Create a validator for the element.
Signature::
public function createValidator(string $validatorIdentifier, array $options = []);
@@ -0,0 +1,8 @@
getDefaultValue()
'''''''''''''''''
Get the default value with which the form element should be initialized during display.
Signature::
public function getDefaultValue();
@@ -0,0 +1,8 @@
getProperties()
'''''''''''''''
Get all element-specific configuration properties.
Signature::
public function getProperties(): array;
@@ -0,0 +1,37 @@
getUniqueIdentifier()
'''''''''''''''''''''
Returns a unique identifier of the element. While element identifiers are only unique within one form,
this identifier includes also the identifier of the form itself, and therefore making it "globally" unique.
Signature::
public function getUniqueIdentifier(): string;
Example:
.. code-block:: yaml
identifier: exampleForm
label: 'Simple Contact Form'
prototype: standard
type: Form
renderables:
-
identifier: page-1
label: 'Contact Form'
type: Page
renderables:
-
identifier: name
label: 'Name'
type: Text
defaultValue: ''
::
// $formElement->getIdentifier() == 'name'
$uniqueIdentifier = $formElement->getUniqueIdentifier();
// $uniqueIdentifier == 'exampleForm-name'
@@ -0,0 +1,8 @@
initializeFormElement()
'''''''''''''''''''''''
Will be called as soon as the element is (tried to be) added to a form.
Signature::
public function initializeFormElement();
@@ -0,0 +1,9 @@
isRequired()
''''''''''''
Whether or not the element is required.
An element is required if the ``TYPO3\CMS\Extbase\Validation\Validator\NotEmptyValidator`` is attached to the element.
Signature::
public function isRequired(): bool;
@@ -0,0 +1,16 @@
setDataType()
'''''''''''''
The target data type the data should be converted through the property mapper.
Signature::
public function setDataType(string $dataType);
Example::
public function initializeFormElement()
{
$this->setDataType('TYPO3\CMS\Extbase\Domain\Model\FileReference');
parent::initializeFormElement();
}
@@ -0,0 +1,8 @@
setDefaultValue()
'''''''''''''''''
Set the default value with which the form element should be initialized during display.
Signature::
public function setDefaultValue($defaultValue);
@@ -0,0 +1,8 @@
setProperty()
'''''''''''''
Set an element-specific configuration property.
Signature::
public function setProperty(string $key, $value);
@@ -0,0 +1,8 @@
setRenderingOption()
''''''''''''''''''''
Set a rendering option.
Signature::
public function setRenderingOption(string $key, $value);
File diff suppressed because it is too large. Load diff
@@ -0,0 +1,8 @@
getParentRenderable()
'''''''''''''''''''''
Return the parent form element.
Signature::
public function getParentRenderable();
@@ -0,0 +1,8 @@
getTemplateName()
'''''''''''''''''
Get the template name of the form element.
Signature::
public function getTemplateName(): string;
@@ -0,0 +1,9 @@
setParentRenderable()
'''''''''''''''''''''
Set the new parent renderable. You should not call this directly.
It is automatically called by addRenderable.
Signature::
public function setParentRenderable(CompositeRenderableInterface $renderable);
@@ -0,0 +1,8 @@
getIdentifier()
'''''''''''''''
Returns the identifier of the form element.
Signature::
public function getIdentifier(): string;
@@ -0,0 +1,8 @@
getLabel()
''''''''''
Get the label of the form element.
Signature::
public function getLabel(): string;
@@ -0,0 +1,8 @@
getRendererClassName()
''''''''''''''''''''''
Get the renderer class name.
Signature::
public function getRendererClassName(): string;
@@ -0,0 +1,8 @@
getRenderingOptions()
'''''''''''''''''''''
Get all rendering options of the form element.
Signature::
public function getRenderingOptions(): array;
@@ -0,0 +1,9 @@
getType()
'''''''''
Abstract "type" of the form element.
For example, the type is used during the rendering process to determine the template file.
Signature::
public function getType(): string;
@@ -0,0 +1,450 @@
.. include:: ../../Includes.txt
.. _concepts-configuration:
Configuration
=============
.. _concepts-configuration-whysomuchconfiguration:
A lot of configuration. Why?
----------------------------
The requirements for building forms in a declarative and programmatic way
are complex. What we have learned so far is that the program code must be
kept as generic as possible to handle the dynamics of forms, but a generic
program code means a lot of configurative overhead.
Initially, the configuration may overwhelm you, but it also has some great
advantages. Many aspects of EXT:form can be manipulated in a purely
configurative manner without involving a developer.
Furthermore, we wanted to avoid the configuration being done at places
whose context actually suggests something different. This pedantry,
however, leads to the situation in which certain settings have to be
defined multiple times at multiple places. This may seem nonsensical, but
it avoids unpredictable behaviour. Within the form framework, nothing
happens magically. It is all about configuration.
.. _concepts-configuration-whyyaml:
Why YAML?
---------
Former versions of EXT:form used a subset of TypoScript to describe the
definition of a specific form and the behaviour of the included form
elements. This led to a lot of confusion from integrators because the
implemented definition language looked like TypoScript but did not behave
like TypoScript.
Since the definition of forms and form elements must be declarative, the
EXT:form team decided to use YAML. Just through the visual appearance of
YAML, it should be clear to everyone that neither magic nor TypoScript
stdWrap functionality are possible.
.. _concepts-configuration-yamlregistration:
YAML registration
-----------------
At the moment, configuration via YAML is not natively integrated into the
core of TYPO3. You have to make a short detour by using TypoScript in order
to register your YAML configuration. Furthermore, there is a "speciality"
regarding the integration of your YAML configuration for the backend
module.
.. hint::
We recommend using a `site package <https://de.slideshare.net/benjaminkott/typo3-the-anatomy-of-sitepackages>`_.
This will make your life easier if you want to customize EXT:form
heavily in order to suit the customer's needs.
.. _concepts-configuration-yamlregistration-frontend:
YAML registration for the frontend
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
EXT:form registers two YAML configuration files which are required for the
frontend.
.. code-block:: typoscript
plugin.tx_form {
settings {
yamlConfigurations {
10 = EXT:form/Configuration/Yaml/BaseSetup.yaml
20 = EXT:form/Configuration/Yaml/FormEngineSetup.yaml
}
}
}
Since the keys 10 and 20 are already taken, we recommend registering your
own configuration beginning with the key ``100``.
.. code-block:: typoscript
plugin.tx_form {
settings {
yamlConfigurations {
100 = EXT:my_site_package/Configuration/Form/CustomFormSetup.yaml
}
}
}
.. _concepts-configuration-yamlregistration-backend:
YAML registration for the backend
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
EXT:form registers three YAML configuration files which are required for
the backend.
.. code-block:: typoscript
module.tx_form {
settings {
yamlConfigurations {
10 = EXT:form/Configuration/Yaml/BaseSetup.yaml
20 = EXT:form/Configuration/Yaml/FormEditorSetup.yaml
30 = EXT:form/Configuration/Yaml/FormEngineSetup.yaml
}
}
}
Since the keys 10, 20, and 30 are already taken, we recommend registering
your own configuration beginning with the key ``100``.
.. code-block:: typoscript
module.tx_form {
settings {
yamlConfigurations {
100 = EXT:my_site_package/Configuration/Form/CustomFormSetup.yaml
}
}
}
.. important::
Consider the following methods to register TypoScript for the backend.
The backend module of EXT:form is based on Extbase. Such backend modules
can, like frontend plugins, be configured via TypoScript. The frontend
plugins are configured below ``plugin.tx_[pluginkey]``. For the
configuration of the backend ``module.tx_[pluginkey]`` is used.
There are different ways to include the TypoScript configuration for the
backend:
- a) use the API function ``\TYPO3\CMS\Core\Utility\ExtensionManagementUtility::addTypoScriptSetup()``,
- b) add the configuration to your existing TypoScript template.
In both cases, the ``form editor`` will work as expected regardless the
chosen page from the page tree. If using the aforementioned method b, the
configuration would only be valid on a specific page tree, unless you add
your configuration to all trees within your installation. Nevertheless,
being on the root page (uid 0) would still be a problem.
To sum it up: choose either method a or b, and you will be fine.
.. _concepts-configuration-yamlregistration-backend-addtyposcriptsetup:
YAML registration for the backend via addTypoScriptSetup()
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Add the following PHP code to your :file:`ext_localconf.php` of your site
package::
defined('TYPO3_MODE') or die();
call_user_func(function () {
\TYPO3\CMS\Core\Utility\ExtensionManagementUtility::addTypoScriptSetup(
trim('
module.tx_form {
settings {
yamlConfigurations {
100 = EXT:my_site_package/Configuration/Form/CustomFormSetup.yaml
}
}
}
')
);
});
.. _concepts-configuration-configurationaspects:
Configuration aspects
---------------------
In EXT:form, four aspects can be configured:
- the behaviour of the frontend rendering,
- the behaviour of the ``form editor``,
- the behaviour of the ``form manager``, and
- the behaviour of the ``form plugin``.
Those aspects are defined in separate files which are only loaded in the
frontend/ backend when needed. This approach has two advantages:
- increased clarity,
- increased performance, e.g. the ``form editor`` configuration is not
needed in the frontend and therefore not loaded.
It is up to you if you want to follow this guideline or if you want to put
the whole configuration into one large file.
There are some configurational aspects which cannot explicitly be assigned
to either the frontend or the backend. Instead, the configuration is
valid for both areas. For example, within the backend, the whole frontend
configuration is required in order to allow the form preview to work
properly. In addition, as soon as the form is rendered via the ``form
plugin``, the ``FormEngine`` configuration is needed to interpret the
overridden finisher configuration correctly.
.. _concepts-configuration-inheritances:
Inheritances
------------
The final YAML configuration is not based on one huge file. Instead, it is
a compilation of a sequential process:
- First of all, all registered configuration files are parsed as YAML and
are overlaid according to their order.
- After that, the ``__inheritances`` operator is applied. It is a unique
operator introduced by the form framework.
- Finally, all configuration entries with a value of ``null`` are deleted.
Additionally, the frontend configuration can be extended/ overridden by
TypoScript:
.. code-block:: typoscript
plugin.tx_form {
settings {
yamlSettingsOverrides {
...
}
}
}
.. note::
Your TypoScript overrides are not interpreted by the ``form editor``,
i.e. those settings are ignored.
.. note::
The described process is quite handy for you. As soon as you are working
with your :ref:`own configuration files <concepts-configuration-yamlregistration>`,
you only have to define the differences compared to the previously
loaded configuration files.
For example, if you want to override the fluid templates and you therefore
register an additional configuration file via
.. code-block:: typoscript
plugin.tx_form {
settings {
yamlConfigurations {
# register your own additional configuration
# choose a number higher than 30 (below is reserved)
100 = EXT:my_site_package/Configuration/Form/CustomFormSetup.yaml
}
}
}
... you only have to define the following YAML setup in ``EXT:my_site_package/Configuration/Form/CustomFormSetup.yaml``:
.. code-block:: yaml
TYPO3:
CMS:
Form:
prototypes:
standard:
formElementsDefinition:
Form:
renderingOptions:
templateRootPaths:
20: 'EXT:my_site_package/Resources/Private/Templates/Form/Frontend/'
partialRootPaths:
20: 'EXT:my_site_package/Resources/Private/Partials/Form/Frontend/'
layoutRootPaths:
20: 'EXT:my_site_package/Resources/Private/Layouts/Form/Frontend/'
The values of your own configuration file will overrule the corresponding
values of the basic configuration file (:file:`EXT:form/Configuration/Yaml/BaseSetup.yaml`).
.. _concepts-configuration-inheritances-operator:
__inheritances operator
^^^^^^^^^^^^^^^^^^^^^^^
The ``__inheritances`` operator is an extremely useful instrument. Using it
helps to significantly reduce the configuration effort. It behaves similar
to the ``<`` operator in TypoScript. That is, the definition of the source
object is copied to the target object. The configuration can be inherited
from several parent objects and can be overridden afterwards. Two simple
examples will show you the usage and behaviour of the ``__inheritances``
operator.
.. code-block:: yaml
Form:
part01:
key01: value
key02:
key03: value
part02:
__inheritances:
10: Form.part01
The configuration above results in:
.. code-block:: yaml
Form:
part01:
key01: value
key02:
key03: value
part02:
key01: value
key02:
key03: value
As you can see, ``part02`` inherited all of ``part01``'s properties.
.. code-block:: yaml
Form:
part01:
key: value
part02:
__inheritances:
10: Form.part01
key: 'value override'
The configuration above results in:
.. code-block:: yaml
Form:
part01:
key: value
part02:
key: 'value override'
EXT:form heavily uses the ``__inheritances`` operator, in particular, for
the definition of form elements. The following example shows you how to use
the operator to define a new form element which behaves like the parent
element but also has its own properties.
.. code-block:: yaml
TYPO3:
CMS:
Form:
prototypes:
standard:
formElementsDefinition:
GenderSelect:
__inheritances:
10: 'TYPO3.CMS.Form.prototypes.standard.formElementsDefinition.RadioButton'
renderingOptions:
templateName: 'RadioButton'
properties:
options:
f: 'Female'
m: 'Male'
u: 'Unicorn'
a: 'Alien'
The YAML configuration defines a new form element called ``GenderSelect``.
This element inherits its definition from the ``RadioButton`` element but
additionally ships four predefined options. Without any problems, the new
element can be used and overridden within the ``form definition``.
.. hint::
Currently, there is no built-in solution within the TYPO3 core to
preview the resulting/ final EXT:form YAML configuration. If you want
to check the configuration, there is a fishy way which you should never
implement on a production system.
Open the file ``typo3/sysext/form/Classes/Mvc/Configuration/ConfigurationManager.php::getConfigurationFromYamlFile()``
and add the following code before the ``return`` statement::
\TYPO3\CMS\Extbase\Utility\DebuggerUtility::var_dump($yamlSettings, 'form configuration', 9999);
Now open the ``Forms`` module in the backend or navigate to a page in
the frontend which contains a form. The DebuggerUtility will print the
final configuration directly to the screen.
It will probably take some time to fully understand the awesomeness of
this operator. If you are eager to learn more about this great instrument,
check out the unit tests defined in ``EXT:form/Tests/Unit/Mvc/Configuration/InheritancesResolverServiceTest.php``.
.. _concepts-configuration-prototypes:
Prototypes
----------
Most of the configurational aspects of the form framework are defined
in so-called ``prototypes``. By default, EXT:form defines a prototype
named ``standard``. The definition of form elements - including their
rendering in the frontend, ``form editor`` and ``form plugin`` - reside
within those prototypes. As soon as you create a new form, the specific
form definition references such a prototype.
This allows you to do a lot of nifty stuff. Let your imagination run free.
For example:
- based on the referenced prototype, the same form can load
- ...varying templates
- ...varying ``form editor`` configurations
- ...varying ``form plugin`` finisher overrides
- within the ``form manager``, depending on the selected prototype
- ...varying ``form editor`` configurations can be loaded
- ...varying pre-configured form templates (boilerplates) can be chosen
- different prototypes can define different/ extended form elements and
display them in the frontend/ ``form editor`` accordingly
Check out the following use case to fully understand the concept behind
prototypes. Imagine that there are two defined prototypes: "noob" and
"poweruser".
.. t3-field-list-table::
:header-rows: 1
- :a:
:b: Prototype "noob"
:c: Prototype "poweruser"
- :a: **Available form elements within the ``form editor``**
:b: Text, Textarea
:c: No changes. Default behaviour.
- :a: **Available finisher within the ``form editor``**
:b: Only the email finisher is available. It offers a field for setting
the subject of the mail. All remaining fields are hidden and filled
with default values.
:c: No changes. Default behaviour.
- :a: **Finisher overrides within the ``form plugin``**
:b: It is not possible to override the finisher configuration.
:c: No changes. Default behaviour.
@@ -0,0 +1,527 @@
.. include:: ../../Includes.txt
.. _concepts-finishers:
Finishers
=========
The form framework ships a bunch of finishers, which will be briefly
described here. For more details, please head to the API reference and check
out the section regarding :ref:`Finisher Options<apireference-finisheroptions>`.
.. _concepts-finishers-closurefinisher:
Closure finisher
----------------
The 'Closure finisher' can only be used within forms that are created
programmatically. It allows you to execute your own finisher code without
implementing/ declaring a finisher.
.. _concepts-finishers-confirmationfinisher:
Confirmation finisher
---------------------
The 'Confirmation finisher' is a simple finisher that outputs a given
text after the form has been submitted.
.. _concepts-finishers-deleteuploadsfinisher:
DeleteUploads finisher
----------------------
The 'DeleteUploads finisher' removes submitted files. Use this finisher,
for example, after the email finisher if you do not want to keep the files
within your TYPO3 installation.
.. note::
Finishers are only executed on successfully submitted forms. If a user uploads a file but
does not finish the form successfully, the uploaded files will not be deleted.
.. _concepts-finishers-emailfinisher:
Email finisher
--------------
The 'Email finisher' sends an email to one recipient. EXT:form uses two
``EmailFinisher`` declarations with the identifiers ``EmailToReceiver`` and
``EmailToSender``.
.. _concepts-finishers-flashmessagefinisher:
FlashMessage finisher
---------------------
The 'FlashMessage finisher' is a simple finisher that adds a message to the
FlashMessageContainer.
.. _concepts-finishers-redirectfinisher:
Redirect finisher
-----------------
The 'Redirect finisher' is a simple finisher that redirects to another page.
Additional link parameters can be added to the URL.
.. note::
This finisher stops the execution of all subsequent finishers in order to perform a redirect.
Therefore, this finisher should always be the last finisher to be executed.
.. _concepts-finishers-savetodatabasefinisher:
SaveToDatabase finisher
-----------------------
The 'SaveToDatabase finisher' saves the data of a submitted form into a
database table.
Here is an example for adding uploads to ext:news (fal_related_files and fal_media).
.. code-block:: yaml
-
identifier: SaveToDatabase
options:
-
table: tx_news_domain_model_news
mode: insert
elements:
my-field:
mapOnDatabaseColumn: bodytext
imageupload-1:
mapOnDatabaseColumn: fal_media
fileupload-1:
mapOnDatabaseColumn: fal_related_files
databaseColumnMappings:
pid:
value: 3
tstamp:
value: '{__currentTimestamp}'
datetime:
value: '{__currentTimestamp}'
crdate:
value: '{__currentTimestamp}'
hidden:
value: 1
-
table: sys_file_reference
mode: insert
elements:
imageupload-1:
mapOnDatabaseColumn: uid_local
skipIfValueIsEmpty: true
databaseColumnMappings:
table_local:
value: sys_file
tablenames:
value: tx_news_domain_model_news
fieldname:
value: fal_media
tstamp:
value: '{__currentTimestamp}'
crdate:
value: '{__currentTimestamp}'
showinpreview:
value: 1
uid_foreign:
value: '{SaveToDatabase.insertedUids.0}'
-
table: sys_file_reference
mode: insert
elements:
fileupload-1:
mapOnDatabaseColumn: uid_local
skipIfValueIsEmpty: true
databaseColumnMappings:
table_local:
value: sys_file
tablenames:
value: tx_news_domain_model_news
fieldname:
value: fal_related_files
tstamp:
value: '{__currentTimestamp}'
crdate:
value: '{__currentTimestamp}'
uid_foreign:
value: '{SaveToDatabase.insertedUids.0}'
-
table: sys_file_reference
mode: update
whereClause:
uid_foreign: '{SaveToDatabase.insertedUids.0}'
uid_local: 0
databaseColumnMappings:
pid:
value: 0
uid_foreign:
value: 0
.. _concepts-finishers-translation:
Translation of finisher options
-------------------------------
To learn more about this topic, please continue :ref:`here<concepts-frontendrendering-translation-finishers>`.
.. _concepts-finishers-customfinisherimplementations:
Write a custom finisher
-----------------------
If you want to make the finisher configurable in the backend UI read :ref:`here<concepts-finishers-customfinisherimplementations-extend-gui>`.
Finishers are defined as part of a ``prototype`` within a
``finishersDefinition``. The property ``implementationClassName`` is to be
utilized to load the finisher implementation.
.. code-block:: yaml
TYPO3:
CMS:
Form:
prototypes:
standard:
finishersDefinition:
CustomFinisher:
implementationClassName: 'VENDOR\MySitePackage\Domain\Finishers\CustomFinisher'
If the finisher requires options, you can define those within the
``options`` property. The options will be used as default values and can
be overridden using the ``form definition``.
Define the default value:
.. code-block:: yaml
TYPO3:
CMS:
Form:
prototypes:
standard:
finishersDefinition:
CustomFinisher:
implementationClassName: 'VENDOR\MySitePackage\Domain\Finishers\CustomFinisher'
options:
yourCustomOption: 'Ralf'
Override the option using the ``form definition``:
.. code-block:: yaml
identifier: sample-form
label: 'Simple Contact Form'
prototype: standard
type: Form
finishers:
-
identifier: CustomFinisher
options:
yourCustomOption: 'Björn'
renderables:
...
Each finisher has to be programmed to the interface ``TYPO3\CMS\Form\Domain\Finishers\FinisherInterface``
and should extend the class ``TYPO3\CMS\Form\Domain\Finishers\AbstractFinisher``.
In doing so, the logic of the finisher should start with the method
``executeInternal()``.
.. _concepts-finishers-customfinisherimplementations-accessingoptions:
Accessing finisher options
""""""""""""""""""""""""""
If your finisher extends ``TYPO3\CMS\Form\Domain\Finishers\AbstractFinisher``,
you can access your finisher options with the help of the ``parseOption()``
method::
$yourCustomOption = $this->parseOption('yourCustomOption');
``parseOption()`` is looking for 'yourCustomOption' in your
``form definition``. If it cannot be found, the method checks
1. the ``prototype`` configuration for a default value,
2. the finisher class itself by searching for a default value within the
``$defaultOptions`` property::
declare(strict_types = 1);
namespace VENDOR\MySitePackage\Domain\Finishers;
class CustomFinisher extends \TYPO3\CMS\Form\Domain\Finishers\AbstractFinisher
{
protected $defaultOptions = [
'yourCustomOption' => 'Olli',
];
// ...
}
If the option cannot be found by processing this fallback chain, ``null`` is
returned.
If the option is found, the process checks whether the option value will
access :ref:`FormRuntime values<concepts-finishers-customfinisherimplementations-accessingoptions-formruntimeaccessor>`.
If the ``FormRuntime`` returns a positive result, it is checked whether the
option value :ref:`can access values of preceding finishers<concepts-finishers-customfinisherimplementations-finishercontext-sharedatabetweenfinishers>`.
At the very end, it tries to :ref:`translate the finisher options<concepts-frontendrendering-translation-finishers>`.
.. _concepts-finishers-customfinisherimplementations-accessingoptions-formruntimeaccessor:
Accessing form runtime values
'''''''''''''''''''''''''''''
By utilizing a specific notation, finisher options can be populated with
submitted form values (assuming you are using the ``parseOption()`` method).
You can access values of the ``FormRuntime`` and thus values of each single
form element by encapsulating the option values with ``{}``. If there is a
form element with the ``identifier`` 'subject', you can access its value
within the finisher configuration. Check out the following example to
get the whole idea.
.. code-block:: yaml
identifier: simple-contact-form
label: 'Simple Contact Form'
prototype: standard
type: Form
finishers:
-
identifier: Custom
options:
yourCustomOption: '{subject}'
renderables:
-
identifier: subject
label: 'Subject'
type: Text
::
// $yourCustomOption contains the value of the form element with the
// identifier 'subject'
$yourCustomOption = $this->parseOption('yourCustomOption');
In addition, you can use ``{__currentTimestamp}`` as a special option value.
It will return the current UNIX timestamp.
.. _concepts-finishers-customfinisherimplementations-finishercontext:
Finisher Context
""""""""""""""""
The class ``TYPO3\CMS\Form\Domain\Finishers\FinisherContext`` takes care of
transferring a finisher context to each finisher. Given the finisher is
derived from ``TYPO3\CMS\Form\Domain\Finishers\AbstractFinisher`` the
finisher context will be available via::
$this->finisherContext
The method ``cancel`` prevents the execution of successive finishers::
$this->finisherContext->cancel();
The method ``getFormValues`` returns all of the submitted form values.
``getFormValues``::
$this->finisherContext->getFormValues();
The method ``getFormRuntime`` returns the ``FormRuntime``::
$this->finisherContext->getFormRuntime();
.. _concepts-finishers-customfinisherimplementations-finishercontext-sharedatabetweenfinishers:
Share data between finishers
''''''''''''''''''''''''''''
The method ``getFinisherVariableProvider`` returns an object (``TYPO3\CMS\Form\Domain\Finishers\FinisherVariableProvider``)
which allows you to store data and transfer it to other finishers. The data
can be easily accessed programmatically or within your configuration::
$this->finisherContext->getFinisherVariableProvider();
The data is stored within the ``FinisherVariableProvider`` and is addressed
by a user-defined 'finisher identifier' and a custom option value path. The
name of the 'finisher identifier' should consist of the name of the finisher
without the potential 'Finisher' appendix. If your finisher is derived from
the class ``TYPO3\CMS\Form\Domain\Finishers\AbstractFinisher``, the name of
this construct is stored in the following variable::
$this->shortFinisherIdentifier
For example, if the name of your finisher class is 'CustomFinisher', the
mentioned variable will contain the value 'Custom'.
There are a bunch of methods to access and manage the finisher data:
- Add data::
$this->finisherContext->getFinisherVariableProvider()->add(
$this->shortFinisherIdentifier,
'unique.value.identifier',
$value
);
- Get data::
$this->finisherContext->getFinisherVariableProvider()->get(
$this->shortFinisherIdentifier,
'unique.value.identifier',
'default value'
);
- Check the existence of data::
$this->finisherContext->getFinisherVariableProvider()->exists(
$this->shortFinisherIdentifier,
'unique.value.identifier'
);
- Delete data::
$this->finisherContext->getFinisherVariableProvider()->remove(
$this->shortFinisherIdentifier,
'unique.value.identifier'
);
In this way, each finisher can access data programmatically. Moreover, it is
possible to retrieve the data via configuration, provided that a finisher
stores the values within the ``FinisherVariableProvider``.
Assuming that a finisher called 'Custom' sets data as follows::
$this->finisherContext->getFinisherVariableProvider()->add(
$this->shortFinisherIdentifier,
'unique.value.identifier',
'Wouter'
);
... you are now able to access the value 'Wouter' via ``{Custom.unique.value.identifier}``
in any other finisher.
.. code-block:: yaml
identifier: sample-form
label: 'Simple Contact Form'
prototype: standard
type: Form
finishers:
-
identifier: Custom
options:
yourCustomOption: 'Frans'
-
identifier: SomeOtherStuff
options:
someOtherCustomOption: '{Custom.unique.value.identifier}'
.. _concepts-finishers-customfinisherimplementations-extend-gui:
Add finisher to backend UI
''''''''''''''''''''''''''
After adding a custom finisher you can also add the finisher to the
form editor GUI to let your backend users configure it visually. Add the
following to the backend yaml setup:
.. code-block:: yaml
TYPO3:
CMS:
Form:
prototypes:
standard:
formElementsDefinition:
Form:
formEditor:
editors:
900:
# Extend finisher drop down
selectOptions:
35:
value: 'CustomFinisher'
label: 'Custom Finisher'
propertyCollections:
finishers:
# add finisher fields
25:
identifier: 'CustomFinisher'
editors:
__inheritances:
10: 'TYPO3.CMS.Form.mixins.formElementMixins.BaseCollectionEditorsMixin'
100:
label: "Custom Finisher"
# custom field (input, required)
110:
identifier: 'customField'
templateName: 'Inspector-TextEditor'
label: 'Custom Field'
propertyPath: 'options.customField'
propertyValidators:
10: 'NotEmpty'
# email field
120:
identifier: 'email'
templateName: 'Inspector-TextEditor'
label: 'Subscribers email'
propertyPath: 'options.email'
enableFormelementSelectionButton: true
propertyValidators:
10: 'NotEmpty'
20: 'FormElementIdentifierWithinCurlyBracesInclusive'
finishersDefinition:
CustomFinisher:
formEditor:
iconIdentifier: 'form-finisher'
label: 'Custom Finisher'
predefinedDefaults:
options:
customField: ''
email: ''
# displayed when overriding finisher settings
FormEngine:
label: 'Custom Finisher'
elements:
customField:
label: 'Custom Field'
config:
type: 'text'
email:
label: 'Subscribers email'
config:
type: 'text'
Make sure the setup file is registered in the backend:
.. code-block:: typoscript
module.tx_form.settings.yamlConfigurations {
123456789 = EXT:yourExtension/Configuration/Form/Backend.yml
}
@@ -0,0 +1,110 @@
.. include:: ../../Includes.txt
.. _concepts-formdefinition-vs-formconfiguration:
Form configuration vs. form definition
======================================
So far, we have only described the configuration of the form framework.
Once again, based on prototypes, the form configuration allows you to
define:
- which form elements, finishers, and validators are available,
- how those objects are pre-configured,
- how those objects will be displayed within the frontend and backend.
In contrast, the **form definition** describes the specific form, including
- all form elements and their corresponding validators,
- the order of the form elements within the form, and
- the finishers which are fired as soon as the form has been submitted.
- Furthermore, it defines the concrete values of each property of the
mentioned aspects.
In other words, the **prototype configuration** defines the existence of a
form element of type ``Text`` globally. The **form definition** declares
that such a form element of type ``Text`` is located on page 1 at position
1 of a specific form. In addition, it carries the information that this form
element comes with the HTML attribute "placeholder" with value "Your name
here". The form definition is written by the ``form editor``.
Example form definition
-----------------------
.. code-block:: yaml
identifier: ext-form-simple-contact-form-example
label: 'Simple Contact Form'
prototype: standard
type: Form
finishers:
-
identifier: EmailToReceiver
options:
subject: 'Your message'
recipientAddress: 'your.company@example.com'
recipientName: 'Your company name'
senderAddress: '{email}'
senderName: '{name}'
renderables:
-
identifier: page-1
label: 'Contact Form'
type: Page
renderables:
-
identifier: name
label: 'Name'
type: Text
properties:
fluidAdditionalAttributes:
placeholder: 'Name'
defaultValue: ''
validators:
-
identifier: NotEmpty
-
identifier: subject
label: 'Subject'
type: Text
properties:
fluidAdditionalAttributes:
placeholder: 'Subject'
defaultValue: ''
validators:
-
identifier: NotEmpty
-
identifier: email
label: 'Email'
type: Text
properties:
fluidAdditionalAttributes:
placeholder: 'Email address'
defaultValue: ''
validators:
-
identifier: NotEmpty
-
identifier: EmailAddress
-
identifier: message
label: 'Message'
type: Textarea
properties:
fluidAdditionalAttributes:
placeholder: ''
defaultValue: ''
validators:
-
identifier: NotEmpty
-
identifier: summarypage
label: 'Summary page'
type: SummaryPage
@@ -0,0 +1,549 @@
.. include:: ../../Includes.txt
.. _concepts-formeditor:
Form editor
===========
.. _concepts-formeditor-general:
What does it do?
----------------
The ``form editor`` is a powerful graphical user interface which allows the
backend editor to create ``form definitions`` without writing a single line
of code. Those ``form definitions`` will be used by the frontend process to
render beautiful forms.
The ``form editor`` is a modular interface which consists of several
components:
- Stage: central visual component of the ``form editor`` which displays the
form elements in an abstract view and a frontend preview
- Tree: displays the structure of the form as a tree
- Inspector: context specific toolbar which handles the visual display of
form element options and allows editing those
- Core: includes core functionalities of the ``form editor``
- ViewModel: defines and steers the visual display
- Mediator: delegates events of the components
- Modals: processes modals
- FormEditor: provides API functions
- Helper: helper functions which mainly allow the manipulation of DOM
elements
Generally speaking, the ``Modals``, ``Inspector``, and ``Stage`` components
can be adapted through configuration. Especially the ``Inspector`` component
is modular and extremely flexible. As an integrator, you can reuse so-called
``inspector editors``. Those elements are input fields of different types
which allow the backend editor to alter all of the available form element
options.
.. figure:: ../../Images/javascript_module_interaction.png
:alt: JavaScript module interaction
JavaScript module interaction
There is a general ``form editor`` configuration which can be found below
the following configuration path:
.. code-block:: yaml
TYPO3:
CMS:
Form:
prototypes:
standard:
formEditor:
Furthermore, you are able to configure the ``form editor`` regarding its
different aspects. The configuration can be found below the following
configuration paths:
.. code-block:: yaml
TYPO3:
CMS:
Form:
prototypes:
standard:
formElementsDefinition:
<formElementTypeIdentifier>:
formEditor:
finishersDefinition:
<finisherIdentifier>
formEditor:
validatorsDefinition:
<validatorIdentifier>
formEditor:
.. _concepts-formeditor-stage:
Stage
-----
The ``Stage`` is the central visual component of the form editor which
displays the form elements in two different modes:
- abstract view: all form elements of a ``Page`` are presented in an
abstract way,
- frontend preview: renders the form like it will (nearly) be displayed in
the frontend ('nearly' since you have to make sure that your frontend CSS
is also loaded in the backend in order to get the exact preview).
Per default, the frontend templates of EXT:form are based on Twitter
Bootstrap. Since the backend of TYPO3 CMS also depends on this CSS framework,
the corresponding CSS files are already loaded in the backend context.
Nevertheless, certain parts of the CSS were overridden and extended in order
to meet the specific needs of the TYPO3 backend. Thus, the frontend preview
in the backend could differ compared to the "real" frontend.
If your frontend preview requires loading additional CSS or a CSS framework
then go ahead and configure a specific ``prototype`` accordingly.
Beside the frontend templates, there are also templates for the abstract
view, i.e. you can customize the rendering of the abstract view for each
form element. If you have created your own form elements, in most cases you
will fall back to the already existing Fluid templates. But remember, you
are always able to create you own Fluid templated and adapt the abstract view
till it suits your needs.
For more information, read the following chapter: ':ref:`Common abstract view form element templates<apireference-formeditor-stage-commonabstractformelementtemplates>`'.
.. _concepts-formeditor-inspector:
Inspector
---------
The ``Inspector`` component is situated on the right side of the ``form
editor``. It is a modular, extremely flexible, and context specific toolbar
which depends on the chosen form element. The ``Inspector`` allows editing
the form element's options with the help of so-called ``inspector editors``.
For the most parts, the interface can be easily customized by writing
YAML configuration. For each form element you can define which properties
are available and in which way they can be edited.
In addition to the editable form element properties (like ``properties.placeholder``)
there are so-called ``property collections`` which can be written by the
``form editor`` as well. Their definition is stored on the hierarchical
level of a form element. Right now, there are the following ``property
collections``:
- validators
- finishers
``Property collections`` also make use of ``inspector editors`` in order to
configure them properly. Due to this, we can do a lot of cool stuff. Imagine
we have got a validator "Number range" with two validator options called
"Minimum" and "Maximum". Additionally, we have got two form elements "Age
spouse" and "Age infant". For both form elements the validator is available
but for the form element "Age child" the validator option "Minimum" is not
editable and the option "Maximum" is pre-filled with a certain value.
.. _concepts-formeditor-basicjavascriptconcepts:
Basic JavaScript concepts
-------------------------
The form framework was designed to be as extendible as possible. Sooner or
later, you want to customize the components of the ``form editor`` using
JavaScript. This is especially true if you want to create your own
``inspector editors``. In order to achieve this, you can implement your own
JavaScript modules. Those modules will include the required algorithms for
the ``inspector editors`` and the ``abstract view`` as well as your own
event listing.
.. _concepts-formeditor-basicjavascriptconcepts-registercustomjavascriptmodules:
Register custom JavaScript modules
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
The following YAML configuration registers an additional JavaScript module.
.. code-block:: yaml
TYPO3:
CMS:
Form:
prototypes:
standard:
formEditor:
dynamicRequireJsModules:
additionalViewModelModules:
10: 'TYPO3/CMS/MySitePackage/Backend/FormEditor/ViewModel'
According to the example shown above, the JavaScript files have to be stored
within the folder ``my_site_package/Resources/Public/JavaScript/Backend/FormEditor/ViewModel.js``.
In the TYPO3 backend JavaScript files are loaded via RequireJS which depends
on a certain convention. The name of the module starts with **TYPO3/CMS**/MySitePackage/Backend/FormEditor/ViewModel
followed by your extension key TYPO3/CMS/**MySitePackage**/Backend/FormEditor/ViewModel.
Thus, you have to ensure that the module is stored within a subfolder of ``my_site_package/Resources/Public/JavaScript/``.
The part TYPO3/CMS/MySitePackage/**Backend/FormEditor**/ViewModel tells you
that your files have to be stored in my_site_package/Resources/Public/JavaScript/**Backend/FormEditor**/.
The last section TYPO3/CMS/MySitePackage/Backend/FormEditor/**ViewModel**
states the name of the JavaScript file without the file extension (.js).
Check out the following base template which shows you the recommended way
for setting up your own module.
.. code-block:: javascript
/**
* Module: TYPO3/CMS/MySitePackage/Backend/FormEditor/ViewModel
*/
define(['jquery',
'TYPO3/CMS/Form/Backend/FormEditor/Helper'
], function($, Helper) {
'use strict';
return (function($, Helper) {
/**
* @private
*
* @var object
*/
var _formEditorApp = null;
/**
* @private
*
* @return object
*/
function getFormEditorApp() {
return _formEditorApp;
};
/**
* @private
*
* @return object
*/
function getPublisherSubscriber() {
return getFormEditorApp().getPublisherSubscriber();
};
/**
* @private
*
* @return object
*/
function getUtility() {
return getFormEditorApp().getUtility();
};
/**
* @private
*
* @param object
* @return object
*/
function getHelper() {
return Helper;
};
/**
* @private
*
* @return object
*/
function getCurrentlySelectedFormElement() {
return getFormEditorApp().getCurrentlySelectedFormElement();
};
/**
* @private
*
* @param mixed test
* @param string message
* @param int messageCode
* @return void
*/
function assert(test, message, messageCode) {
return getFormEditorApp().assert(test, message, messageCode);
};
/**
* @private
*
* @return void
* @throws 1491643380
*/
function _helperSetup() {
assert('function' === $.type(Helper.bootstrap),
'The view model helper does not implement the method "bootstrap"',
1491643380
);
Helper.bootstrap(getFormEditorApp());
};
/**
* @private
*
* @return void
*/
function _subscribeEvents() {
getPublisherSubscriber().subscribe('some/eventName/you/want/to/handle', function(topic, args) {
myCustomCode();
});
};
/**
* @private
*
* @return void
*/
function myCustomCode() {
};
/**
* @public
*
* @param object formEditorApp
* @return void
*/
function bootstrap(formEditorApp) {
_formEditorApp = formEditorApp;
_helperSetup();
_subscribeEvents();
};
/**
* Publish the public methods.
* Implements the "Revealing Module Pattern".
*/
return {
bootstrap: bootstrap
};
})($, Helper);
});
.. _concepts-formeditor-basicjavascriptconcepts-events:
Events
^^^^^^
The event handling of EXT:form is based on the ``Publish/Subscribe Pattern``.
To learn more about this terrific pattern, check out this website: https://addyosmani.com/resources/essentialjsdesignpatterns/book/.
Please not that the processing sequence of the subscribers cannot be
influenced. Furthermore, there is no information flow between the
subscribers. All events have to be arranged asynchronously.
For more information, head to the API reference and read the section about
':ref:`Events<concepts-formeditor-basicjavascriptconcepts-events>`'.
.. _concepts-formeditor-basicjavascriptconcepts-formelementmodel:
FormElement model
^^^^^^^^^^^^^^^^^
Within the JavaScript code, each form element is represented by a
`FormElement model``. This model can be seen as a copy of the ``form
definition'' enriched by some additional data. The following example shows
you a ``form definition`` and the debug output of the corresponding
``FormElement model``.
.. code-block:: yaml
identifier: javascript-form-element-model
label: 'JavaScript FormElement model'
type: Form
finishers:
-
identifier: EmailToReceiver
options:
subject: 'Your message: {subject}'
recipientAddress: your.company@example.com
recipientName: 'Your Company name'
senderAddress: '{email}'
senderName: '{name}'
replyToAddress: ''
carbonCopyAddress: ''
blindCarbonCopyAddress: ''
format: html
attachUploads: 'true'
translation:
language: ''
renderables:
-
identifier: page-1
label: 'Contact Form'
type: Page
renderables:
-
identifier: name
label: Name
type: Text
properties:
fluidAdditionalAttributes:
placeholder: Name
defaultValue: ''
validators:
-
identifier: NotEmpty
.. code-block:: javascript
{
"identifier": "javascript-form-element-model",
"label": "JavaScript FormElement model",
"type": "Form",
"prototypeName": "standard",
"__parentRenderable": null,
"__identifierPath": "example-form",
"finishers": [
{
"identifier": "EmailToReceiver",
"options": {
"subject": "Your message: {subject}",
"recipientAddress": "your.company@example.com",
"recipientName": "Your Company name",
"senderAddress": "{email}",
"senderName": "{name}",
"replyToAddress": "",
"carbonCopyAddress": "",
"blindCarbonCopyAddress": "",
"format": "html",
"attachUploads": true,
"translation": {
"language": ""
}
}
}
],
"renderables": [
{
"identifier": "page-1",
"label": "Contact Form",
"type": "Page",
"__parentRenderable": "example-form (filtered)",
"__identifierPath": "example-form/page-1",
"renderables": [
{
"identifier": "name",
"defaultValue": "",
"label": "Name",
"type": "Text",
"properties": {
"fluidAdditionalAttributes": {
"placeholder": "Name"
}
},
"__parentRenderable": "example-form/page-1 (filtered)",
"__identifierPath": "example-form/page-1/name",
"validators": [
{
"identifier": "NotEmpty"
}
]
}
]
}
]
}
For each form element which has child elements, you will find a property
called ``renderables``. Those ``renderables`` are arrays whose elements
consists of ``FormElement models`` of the particular child elements.
As previously mentioned, the ``FormElement model`` is a conglomerate of the
data of the ``form definition`` and some additional information:
- __parentRenderable
- __identifierPath
The following methods can be utilized in order to access the data of a
``FormElement model``:
- get()
- set()
- unset()
- on()
- off()
- getObjectData()
- toString()
- clone()
For more information, head to the API reference and read the section about
the ':ref:`FormElement model<apireference-formeditor-basicjavascriptconcepts-formelementmodel>`'.
.. _concepts-formeditor-translation-formeditor:
Translation of form editor
--------------------------
All option values which reside below the following configuration keys can be
translated:
.. code-block:: yaml
TYPO3:
CMS:
Form:
prototypes:
standard:
formEditor:
formElementsDefinition:
<formElementTypeIdentifier>:
formEditor:
finishersDefinition:
<finisherIdentifier>
formEditor:
validatorsDefinition:
<validatorIdentifier>
formEditor:
The translation files of the ``form editor`` are loaded as follows:
.. code-block:: yaml
TYPO3:
CMS:
Form:
prototypes:
standard:
formEditor:
translationFile:
# translation files for the form editor
10: 'EXT:form/Resources/Private/Language/Database.xlf'
20: 'EXT:my_site_package/Resources/Private/Language/Database.xlf'
The process searches for each option value within all of the defined
translation files. If a translation is found, the translated option value
will be used in preference.
Imagine, the following is defined for an option value:
.. code-block:: yaml
...
label: 'formEditor.elements.Form.editor.finishers.label'
...
First of all, the process searches for the translation key ``formEditor.elements.Form.editor.finishers.label``
within the file ``20: 'EXT:my_site_package/Resources/Private/Language/Database.xlf'``
and after it inside the file ``10: 'EXT:form/Resources/Private/Language/Database.xlf'``.
If nothing is found, the option value will be displayed unmodified.
Due to compatibility issues, the setting ``translationFile`` is not defined
as an array in the default configuration. To load your own translation files,
you should define an array containing 'EXT:form/Resources/Private/Language/Database.xlf'
as first entry (key ``10``) followed by your own file (key ``20``) as
displayed in the example above.
.. _concepts-formeditor-extending:
Examples for extending the editor
---------------------------------
Learn :ref:`here <concepts-finishers-customfinisherimplementations-extend-gui>`
how to make the finisher configurable in the backend UI.
@@ -0,0 +1,144 @@
.. include:: ../../Includes.txt
.. _concepts-form-file-storages:
Form/ File storages
===================
EXT:form stores the form definitions within the file system and thus needs
write access to this storage. By default, the filemount ``user_uploads`` is
used. It is possible to configure a different and/ or an additional
filemount, which is then utilized for storing and reading forms.
The backend user will only see form definitions that are stored in
filemounts where the user has at least read access. The ``form editor`` and
the ``form plugin`` respect those access rights. In this way, you are able
to implement ACLs. If you have configured more than one filemount and the
backend user is able to access those, the ``form manager`` will allow the
user to choose the preferred storage in which the form will be saved.
Even cooler, form definitions can be stored in and shipped with your custom
extensions. If configured accordingly, the backend user will be able to
embed those forms. Furthermore, you can configure that these form
definitions:
- can be edited within the ``form editor``,
- can be deleted with the help of the ``form manager``.
By default, the aforementioned options are turned off. We decided to do so
because having dynamic content within an extension - which is possibly
version-controlled - is usually not a good idea. Furthermore, there is no
ACL system available.
**File uploads** will be saved within filemounts as well. They are handled
as FAL objects. The available filemounts for such uploads can be configured.
When adding/ editing a file upload element, the backend user can select the
desired upload storage.
.. note::
In principle, files in filemounts are publicly accessible. If the
uploaded files could contain sensitive data, you should suppress any
HTTP access to the filemount. This may, for example, be achieved by
creating a :file:`.htaccess` file, assuming you are using an Apache web
server. The directive of the :file:`.htaccess` file is fairly easy:
.. code-block:: apache
# Apache ≥ 2.3
<IfModule mod_authz_core.c>
Require all denied
</IfModule>
# Apache < 2.3
<IfModule !mod_authz_core.c>
Order allow,deny
Deny from all
Satisfy All
</IfModule>
The following code block shows you how to configure additional filemounts
for form definitions.
.. code-block:: yaml
TYPO3:
CMS:
Form:
persistenceManager:
allowedFileMounts:
# default filemount, no need to redeclare it again
# just to show you the structure
# 10: 1:/form_definitions/
# additional filemounts
100: 1:/custom/forms/
110: 2:/cloudstorage/forms/
The following code block shows you how to allow an extension path as an
additional filemount for form definitions.
.. code-block:: yaml
TYPO3:
CMS:
Form:
persistenceManager:
allowedExtensionPaths:
10: EXT:my_site_package/Resources/Private/Forms/
Add the following config if you want to allow backend users to **edit**
forms stored within your own extension.
.. code-block:: yaml
TYPO3:
CMS:
Form:
persistenceManager:
allowSaveToExtensionPaths: true
Add the following config if you want to allow backend users to **delete**
forms stored within your own extension.
.. code-block:: yaml
TYPO3:
CMS:
Form:
persistenceManager:
allowDeleteFromExtensionPaths: true
The following code blocks show you the default setup for filemounts that
are used for file (and image) uploads.
.. code-block:: yaml
TYPO3:
CMS:
Form:
prototypes:
standard:
formElementsDefinition:
FileUpload:
formEditor:
predefinedDefaults:
properties:
saveToFileMount: '1:/user_upload/'
editors:
400:
selectOptions:
10:
value: '1:/user_upload/'
label: '1:/user_upload/'
properties:
saveToFileMount: '1:/user_upload/'
ImageUpload
properties:
saveToFileMount: '1:/user_upload/'
editors:
400:
selectOptions:
10:
value: '1:/user_upload/'
label: '1:/user_upload/'
@@ -0,0 +1,145 @@
.. include:: ../../Includes.txt
.. _concepts-formmanager:
Form manager
============
.. _concepts-formmanager-general:
What does it do?
----------------
The ``form manager`` can be accessed by opening the backend module 'Forms'.
It allows the editor to administer all of the existing forms stored on the
accessible filemounts. The central element of the ``form manager`` is a
table view which...
- lists all forms
- allows users to create, edit, duplicate, and delete forms
- names the storage folder
- gives a broad overview on which pages the listed forms are used in.
The creation and duplication of forms is supported by a so-called ``form
wizard``. The wizard guides the editor through the process and offers a
variety of settings depending on the form configuration. Those settings
include choosing filemounts, prototypes, and start templates.
.. figure:: ../../Images/form_manager.png
:alt: The form manager
TYPO3 Backend with opened module 'Forms' displaying the form manager.
.. _concepts-formmanager-starttemplate:
Start templates
---------------
This is a very nifty feature. When creating a new form, the ``form manager``
allows the backend editor to select a so-called ``Start template``. Such a
template is a predefined ``form definition`` without the property
``prototypeName`` which is normally used as a foundation of a new form.
As an integrator, you can specify as many ``Start templates`` as you desire
for a given ``prototype``. After you have defined such a template, follow
these easy steps to use your defined ``Start templates`` as a foundation:
- open the ``Forms`` module
- create a new form by clicking on the appropriate button
- enter the 'Form name' and click the checkbox 'Advanced settings'
- during the next steps you can select a ``Start template``
For each ``prototype``, you have to define a ``Start template`` in order to
enable the editor to choose one. Additionally, the same ``Start template``
can be used for several ``prototypes``. To do so, make sure the included
form elements of the template are defined in the corresponding ``prototype``.
For example, imagine your integrator has :ref:`configured<typo3.cms.form.formmanager.selectablePrototypesConfiguration>`
a prototype called 'routing' which contains a custom form element with the
``<formElementTypeIdentifier>`` 'locationPicker'. The element is only
defined for this prototype. The integrator has created a ``Start template``
which carries the 'locationPicker' form element. A backend editor could now
select and use this ``Start template``, including the custom form element,
as long as the ``prototype`` is set to 'routing'. If the integrator also
adds this custom form element to another ``prototype``, the process would
crash. The custom form element is only known by the ``prototype`` 'routing'.
The following code block shows the minimal configuration of a ``Start
template``. You need at least the root form element ('Form') and a 'Page'.
.. code-block:: yaml
type: 'Form'
identifier: 'blankForm'
label: '[Blank Form]'
renderables:
-
type: 'Page'
identifier: 'page-1'
label: 'Page'
As mentioned previously, the form wizard within the ``form manager`` offers
a list of all existing, :ref:`pre-configured<typo3.cms.form.formmanager.selectableprototypesconfiguration.*.newformtemplates>`
``Start templates``. As soon as the backend editor creates a form with the
help of such a template, a new ``form definition`` is generated based on the
one of the selected ``Start template``. The ``form definition`` will be
enriched by the property ``propertyName`` defining the chosen ``prototype``.
The ``identifier`` of the root form element ('Form') is automatically set
based on the entered "Form name". Additionally, this name is used for the
property `` label`` of the 'Form' element. Finally, the ``form editor`` is
loaded and displays the newly created form.
.. _concepts-formmanager-translation-starttemplate:
Translation of the form manager
-------------------------------
All option values which reside below the following configuration keys can be
translated:
.. code-block:: yaml
TYPO3:
CMS:
Form:
formManager:
The translation files of the ``form manager`` are loaded as follows:
.. code-block:: yaml
TYPO3:
CMS:
Form:
formManager:
translationFile:
# translation files for the form manager
10: 'EXT:form/Resources/Private/Language/Database.xlf'
20: 'EXT:my_site_package/Resources/Private/Language/Form/Database.xlf'
The process searches for each option value within all of the defined
translation files. If a translation is found, the translated option value
will be used in preference.
Imagine, the following is defined for an option value:
.. code-block:: yaml
...
label: 'formManager.selectablePrototypesConfiguration.standard.label'
...
First of all, the process searches for the translation key ``formManager.selectablePrototypesConfiguration.standard.label``
within the file ``20: 'EXT:my_site_package/Resources/Private/Language/Form/Database.xlf'``
and after it inside the file ``10: 'EXT:form/Resources/Private/Language/Database.xlf'``.
If nothing is found, the option value will be displayed unmodified.
Due to compatibility issues, the setting ``translationFile`` is not defined
as an array in the default configuration. To load your own translation files,
you should define an array containing 'EXT:form/Resources/Private/Language/Database.xlf'
as first entry (key ``10``) followed by your own file (key ``20``) as
displayed in the example above.
@@ -0,0 +1,87 @@
.. include:: ../../Includes.txt
.. _concepts-formplugin:
Form plugin
===========
.. _concepts-formelugin-general:
What does it do?
----------------
The form plugin allows you to assign a form - created with the ``form
editor`` or shipped with your extension - to a specific page. This enables
you to re-use forms throughout the whole TYPO3 installation. Furthermore, it
offers the backend editor the possibility to override certain aspects of the
form definition. At the moment, only finisher options can be overridden. The
possibilities depend on the configuration of the underlying prototype.
Imagine, your form contains a redirect finisher. The redirect target is set
globally and valid for the whole ``form definition`` . While adding the form
to a specific page, the backend editor can define a different redirect targeting. This
setting is only valid for the page containing the plugin.
Read more about changing the :ref:`general<typo3.cms.form.prototypes.\<prototypeidentifier>.formengine>`
and :ref:`aspect-specific form plugin configuration<typo3.cms.form.prototypes.\<prototypeIdentifier>.finishersdefinition.\<finisheridentifier>.formengine>`.
.. _concepts-formplugin-translation-formengine:
Translation of form plugin
--------------------------
All option values which reside below the following configuration keys can be
translated:
.. code-block:: yaml
TYPO3:
CMS:
Form:
prototypes:
standard:
finishersDefinition:
<finisherIdentifier>
formEngine:
The translation files of the ``form plugin`` are loaded as follows:
.. code-block:: yaml
TYPO3:
CMS:
Form:
prototypes:
standard:
formEngine:
translationFile:
# translation files for the form plugin (finisher overrides)
10: 'EXT:form/Resources/Private/Language/Database.xlf'
20: 'EXT:my_site_package/Resources/Private/Language/Database.xlf'
The process searches for each option value within all of the defined
translation files. If a translation is found, the translated option value
will be used in preference.
Imagine, the following is defined for an option value:
.. code-block:: yaml
...
label: 'tt_content.finishersDefinition.EmailToReceiver.label'
...
First of all, the process searches for the translation key
``tt_content.finishersDefinition.EmailToReceiver.label`` within the file
20: 'EXT:my_site_package/Resources/Private/Language/Database.xlf' and after
it inside the file 10: 'EXT:form/Resources/Private/Language/Database.xlf'.
If nothing is found, the option value will be displayed unmodified.
Due to compatibility issues, the setting ``translationFile`` is not defined
as an array in the default configuration. To load your own translation files,
you should define an array containing 'EXT:form/Resources/Private/Language/Database.xlf'
as first entry (key ``10``) followed by your own file (key ``20``) as
displayed in the example above.
@@ -0,0 +1,878 @@
.. include:: ../../Includes.txt
.. _concepts-frontendrendering:
==================
Frontend rendering
==================
.. _concepts-frontendrendering-basiccodecomponents:
Basic code components
=====================
.. figure:: ../../Images/basic_code_components.png
:alt: Basic code components
Basic code components
.. _concepts-frontendrendering-basiccodecomponents-formdefinition:
TYPO3\\CMS\\Form\\Domain\\Model\\FormDefinition
-----------------------------------------------
The class ``TYPO3\CMS\Form\Domain\Model\FormDefinition`` encapsulates
a complete ``form definition``, with all of its
- pages,
- form elements,
- applicable validation rules, and
- finishers, which should be executed when the form is submitted.
The FormDefinition domain model is not modified when the form is executed.
.. _concepts-frontendrendering-basiccodecomponents-formdefinition-anatomy:
The anatomy of a form
"""""""""""""""""""""
A ``FormDefinition`` domain model consists of multiple ``Page`` objects.
When a form is displayed, only one ``Page`` is visible at any given time.
Moreover, there is a navigation to go back and forth between those pages. A
``Page`` consists of multiple ``FormElements`` which represent the input
fields, textareas, checkboxes, etc. shown on a page. The ``FormDefinition``
domain model, ``Page`` and ``FormElement`` objects have ``identifier``
properties which must be unique for each given ``<formElementTypeIdentifier>``,
i.e. the ``FormDefinition`` domain model and a ``FormElement`` object may
have the same ``identifier`` but having the same identifier for two
``FormElement`` objects is disallowed.
.. _concepts-frontendrendering-basiccodecomponents-formdefinition-anatomy-example:
Example
'''''''
Basically, you can manually create a ``FormDefinition`` domain model just
by calling the API methods on it, or you can use a ``FormFactory`` to build
the form from a different representation format such as YAML::
$formDefinition = $this->objectManager->get(FormDefinition::class, 'myForm');
$page1 = $this->objectManager->get(Page::class, 'page1');
$formDefinition->addPage($page);
// second argument is the <formElementTypeIdentifier> of the form element
$element1 = $this->objectManager->get(GenericFormElement::class, 'title', 'Text');
$page1->addElement($element1);
.. _concepts-frontendrendering-basiccodecomponents-formdefinition-createformusingabstracttypes:
Creating a form using abstract form element types
"""""""""""""""""""""""""""""""""""""""""""""""""
While you can use the ``TYPO3\CMS\Form\Domain\Model\FormDefinition::addPage()``
or ``TYPO3\CMS\Form\Domain\Model\FormElements\Page::addElement()`` methods
and create the ``Page`` and ``FormElement`` objects manually, it is often
better to use the corresponding create* methods (``TYPO3\CMS\Form\Domain\Model\FormDefinition::createPage()``
and ``TYPO3\CMS\Form\Domain\Model\FormElements\Page::createElement()``), as
you pass them an abstract ``<formElementTypeIdentifier>`` such as ``Text``
or ``Page``. EXT:form will automatically resolve the implementation class
name and set default values.
The :ref:`simple example <concepts-frontendrendering-basiccodecomponents-formdefinition-anatomy-example>`
shown above should be rewritten as follows::
// we will come back to this later on
$prototypeConfiguration = [];
$formDefinition = $this->objectManager->get(FormDefinition::class, 'myForm', $prototypeConfiguration);
$page1 = $formDefinition->createPage('page1');
$element1 = $page1->addElement('title', 'Text');
You might wonder how the system knows that the element ``Text`` is
implemented by using a ``GenericFormElement``. This is configured in the
``$prototypeConfiguration``. To make the example from above actually work,
we need to add some meaningful values to ``$prototypeConfiguration``::
$prototypeConfiguration = [
'formElementsDefinition' => [
'Page' => [
'implementationClassName' => 'TYPO3\CMS\Form\Domain\Model\FormElements\Page'
],
'Text' => [
'implementationClassName' => 'TYPO3\CMS\Form\Domain\Model\FormElements\GenericFormElement'
],
],
];
For each abstract ``<formElementTypeIdentifier>`` we have to add some
configuration. In the snippet above, we only define the ``implementation
class name``. Apart form that, it is always possible to set default values
for all configuration options of such elements, as the following example
shows::
$prototypeConfiguration = [
'formElementsDefinition' => [
'Page' => [
'implementationClassName' => 'TYPO3\CMS\Form\Domain\Model\FormElements\Page',
'label' => 'This is the label of the page if nothing else is specified'
],
'Text' => [
'implementationClassName' => 'TYPO3\CMS\Form\Domain\Model\FormElements\GenericFormElement',
'label' = >'Default Label',
'defaultValue' => 'Default form element value',
'properties' => [
'placeholder' => 'Text that is shown if element is empty'
],
],
],
];
.. _concepts-frontendrendering-basiccodecomponents-formdefinition-preconfiguredconfiguration:
Using pre-configured $prototypeConfiguration
""""""""""""""""""""""""""""""""""""""""""""
Often, it does not make sense to manually create the $prototypeConfiguration
array. Bigger parts of this array are pre-configured in the extensions's
YAML settings. The ``TYPO3\CMS\Form\Domain\Configuration\ConfigurationService``
contains helper methods which return the ready-to-use ``$prototypeConfiguration``.
.. _concepts-frontendrendering-basiccodecomponents-formdefinition-rednering:
Rendering a FormDefinition
""""""""""""""""""""""""""
To trigger the rendering of a ``FormDefinition`` domain model, the current
``TYPO3\CMS\Extbase\Mvc\Web\Request`` needs to be bound to the
``FormDefinition``. This binding results in a ``TYPO3\CMS\Form\Domain\Runtime\FormRuntime``
object which contains the ``Runtime State`` of the form. Among other things,
this object includes the currently inserted values::
// $currentRequest and $currentResponse need to be available
// inside a controller, you would use $this->request and $this->response;
$form = $formDefinition->bind($currentRequest, $currentResponse);
// now, you can use the $form object to get information about the currently entered values, etc.
.. _concepts-frontendrendering-basiccodecomponents-formruntime:
TYPO3\\CMS\\Form\\Domain\\Runtime\\FormRuntime
----------------------------------------------
This class implements the runtime logic of a form, i.e. the class
- decides which page is currently shown,
- determines the current values of the form
- triggers validation and property mappings.
You generally receive an instance of this class by calling ``TYPO3\CMS\Form\Domain\Model\FormDefinition::bind()``.
.. _concepts-frontendrendering-basiccodecomponents-formruntime-render:
Rendering a form
""""""""""""""""
Rendering a form is easy. Just call ``render()`` on the ``FormRuntime``::
$form = $formDefinition->bind($request, $response);
$renderedForm = $form->render();
.. _concepts-frontendrendering-basiccodecomponents-formruntime-accessingformvalues:
Accessing form values
"""""""""""""""""""""
In order to get the values the user has entered into the form, you can
access the ``FormRuntime`` object like an array. If a form element with the
identifier ``firstName`` exists, you can use ``$form['firstName']`` to
retrieve its current value. You can set values the same way.
.. _concepts-frontendrendering-basiccodecomponents-formruntime-renderinginternals:
Rendering internals
"""""""""""""""""""
The ``FormRuntime`` inquires the ``FormDefinition`` domain model regarding
the configured renderer (``TYPO3\CMS\Form\Domain\Model\FormDefinition::getRendererClassName()``)
and then triggers render() on this Renderer.
This allows you to declaratively define how a form should be rendered.
.. code-block:: yaml
TYPO3:
CMS:
Form:
prototypes:
standard:
formElementsDefinition:
Form:
rendererClassName: 'TYPO3\CMS\Form\Domain\Renderer\FluidFormRenderer'
.. _concepts-frontendrendering-basiccodecomponents-fluidformrenderer:
TYPO3\\CMS\\Form\\Domain\\Renderer\\FluidFormRenderer
-----------------------------------------------------
This class is a ``TYPO3\CMS\Form\Domain\Renderer\RendererInterface``
implementation which used to render a ``FormDefinition`` domain model. It
is the default EXT:form renderer.
Learn more about the :ref:`FluidFormRenderer Options<apireference-frontendrendering-fluidformrenderer-options>`.
.. _concepts-frontendrendering-codecomponents-customformelementimplementations:
Custom form element implementations
-----------------------------------
EXT:form ships a decent amount of hooks which are available at crucial
points of the life cycle of a ``FormElement``. Most of the time, own
implementations are therefore unnecessary. An own form element can be
defined by:
- writing some configuration, and
- utilizing the standard implementation of ``TYPO3\CMS\Form\Domain\Model\FormElements\GenericFormElement``.
.. code-block:: yaml
TYPO3:
CMS:
Form:
prototypes:
standard:
formElementsDefinition:
CustomFormElementIdentifier:
implementationClassName: 'TYPO3\CMS\Form\Domain\Model\FormElements\GenericFormElement'
With the provided hooks, this ``FormElement`` can now be manipulated.
If you insist on your own implementation, the abstract class ``TYPO3\CMS\Form\Domain\Model\FormElements\AbstractFormElement``
offers a perfect entry point. In addition, we recommend checking-out ``TYPO3\CMS\Form\Domain\Model\Renderable\AbstractRenderable``.
All of your own form element implementations must be programmed to the
interface ``TYPO3\CMS\Form\Domain\Model\Renderable\RenderableInterface``.
It is a good idea to derive your implementation from ``TYPO3\CMS\Form\Domain\Model\FormElements\AbstractFormElement``.
.. _concepts-frontendrendering-renderviewHelper:
"render" viewHelper
===================
The ``RenderViewHelper`` is the actual starting point for form rendering and
not the typical Extbase Controller as you may know it.
For more technical insights read more about the viewHelper's :ref:`arguments<apireference-frontendrendering-renderviewHelper-arguments>`.
.. _concepts-frontendrendering-fluidtemplate:
Render through FLUIDTEMPLATE (without controller)
-------------------------------------------------
.. code-block:: typoscript
tt_content.custom_content_element = COA_INT
tt_content.custom_content_element {
10 = < lib.stdheader
20 = FLUIDTEMPLATE
20 {
file = EXT:my_site_package/Resources/Private/Templates/CustomContentElement.html
settings {
persistenceIdentifier = EXT:my_site_package/Resources/Private/Forms/MyForm.yaml
}
extbase.pluginName = Formframework
extbase.controllerExtensionName = Form
extbase.controllerName = FormFrontend
extbase.controllerActionName = perform
}
}
``my_site_package/Resources/Private/Templates/CustomContentElement.html``:
.. code-block:: html
<formvh:render persistenceIdentifier="{settings.persistenceIdentifier}" />
.. _concepts-frontendrendering-extbase:
Render within your own Extbase extension
----------------------------------------
It is straight forward. Use the ``RenderViewHelper`` like this and you are
done:
.. code-block:: html
<formvh:render persistenceIdentifier="EXT:my_site_package/Resources/Private/Forms/MyForm.yaml"/>
Point the property ``controllerAction`` to the desired action name and
provide values for the other parameters displayed below (you might need
those).
.. code-block:: yaml
type: Form
identifier: 'example-form'
label: 'TYPO3 is cool'
prototypeName: standard
renderingOptions:
controllerAction: perform
addQueryString: false
argumentsToBeExcludedFromQueryString: []
additionalParams: []
renderables:
...
.. _concepts-frontendrendering-programmatically:
Build forms programmatically
============================
To learn more about this topic, head to the chapter ':ref:`Build forms programmatically<apireference-frontendrendering-programmatically>`'
which is part of the API reference section.
.. _concepts-frontendrendering-runtimemanipulation:
Runtime manipulation
====================
.. _concepts-frontendrendering-runtimemanipulation-hooks:
Hooks
-----
EXT:form implements a decent amount of hooks that allow the manipulation of
your forms during runtime. In this way, it is possible to, for example,
- ... prefill form elements with values from your database,
- ... skip a whole page based on the value of a certain form element,
- ... mark a form element as mandatory depending of the chosen value of another
form element.
Please check out the ':ref:`API reference section<apireference-frontendrendering-runtimemanipulation-hooks>`'
for more details.
.. _concepts-frontendrendering-runtimemanipulation-typoscriptoverrides:
TypoScript overrides
--------------------
Each and every ``form definition`` can be overridden via TypoScript if the
``FormFrontendController`` of EXT:form is used to render the form. Normally,
this is the case if the form has been added to the page using the form
plugin or when rendering the form via :ref:`FLUIDTEMPLATE <concepts-frontendrendering-fluidtemplate>`.
The overriding of settings with TypoScript's help takes place after the :ref:`custom finisher settings<concepts-formplugin>`
of the form plugin have been loaded. In this way, you are able to manipulate
the ``form definition`` for a single page. In doing so, the altered
``form definition`` is passed to the ``RenderViewHelper`` which then
generates the form programmatically. At this point, you can still change the
form elements using the above-mentioned concept of :ref:`hooks<concepts-frontendrendering-runtimemanipulation-hooks>`.
.. code-block:: typoscript
plugin.tx_form {
settings {
formDefinitionOverrides {
<formDefinitionIdentifier> {
renderables {
0 {
renderables {
0 {
label = TEXT
label.value = Overridden label
}
}
}
}
}
}
}
}
.. _concepts-frontendrendering-templates:
Templates
=========
The Fluid templates of the form framework are based on Twitter Bootstrap.
.. _concepts-frontendrendering-templates-customtemplates:
Custom templates
----------------
If you want to use custom Fluid templates for the frontend output of the
form elements, you cannot register an additional template path using
TypoScript. Instead, the registration of new template paths has to be done
via YAML. The settings are part of the ``prototypes`` configuration.
.. code-block:: yaml
TYPO3:
CMS:
Form:
prototypes:
standard:
formElementsDefinition:
Form:
renderingOptions:
templateRootPaths:
100: 'EXT:my_site_package/Resources/Private/Frontend/Templates/'
partialRootPaths:
100: 'EXT:my_site_package/Resources/Private/Frontend/Partials/'
layoutRootPaths:
100: 'EXT:my_site_package/Resources/Private/Frontend/Layouts/'
For each ``form definition`` - which references the prototype ``standard`` -
the form framework will additionally look for Fluid templates within the
path 'EXT:my_site_package/Resources/Private/Frontend/[*]' as set above.
Apart from the 'Form' element, the process will search for templates within
the ``partialRootPaths`` folder. The name of the partial is derived from the
property ``formElementTypeIdentifier``. For example, the template of the
form element ``Text`` must be stored within the ``partialRootPaths`` folder
named ``Text.html``. In contrast, the template of the ``Form`` element must
reside within the ``templateRootPaths`` folder. According to the introduced
logic, the template name must be ``Form.html``.
.. _concepts-frontendrendering-translation:
Translation
===========
.. _concepts-frontendrendering-translation-formdefinition:
Translate form definition
-------------------------
The translation of ``form definitions`` works differently to the translation
of the backend aspects. Currently, there is no graphical user interface
supporting the translation process.
If the backend editor needed to translate the ``form definition`` properties
in the same way the backend aspects are translated, he/ she would see long
and unwieldy translation keys while editing a form within the ``form editor``.
In order to avoid this, rather the element properties are translated than
their values. Thus, the form framework does not look for translation keys
within the translation file. Instead, the system searches for translations
of the form element properties independent of their property values. The
property values are ignored if the process finds a proper entry within the
translation file. As a result, the property values are overridden by the
translated value.
This approach is a compromise between two scenarios: the exclusive usage of
the ``form editor`` and/ or the manual creation of ``form definitions``
which can afterwards (theoretically) be edited with the ``form editor``. In
addition, the described compromise allows the editor to create forms in the
default language whose form element property values are displayed as
specified in the ``form editor``. Based on this, an integrator could provide
additional language files which automatically translate the specific form.
Additional translation files can be defined as follows:
.. code-block:: yaml
TYPO3:
CMS:
Form:
prototypes:
standard:
formElementsDefinition:
Form:
renderingOptions:
translation:
translationFile:
# translation files for the frontend
10: 'EXT:form/Resources/Private/Language/locallang.xlf'
20: 'EXT:my_site_package/Resources/Private/Language/Form/locallang.xlf'
Due to compatibility issues, the setting ``translationFile`` is not defined
as an array in the default configuration. To load your own translation files,
you should define an array containing 'EXT:form/Resources/Private/Language/Form/locallang.xlf'
as first entry (key ``10``) followed by your own file (key ``20``) as
displayed in the example above. The array is processed from the highest key
to the lowest, i.e. your translation file with the key ``20`` is processed
first. If the look-up process does not find a key within all of the provided
files, the property value will be displayed unmodified.
The following properties can be translated:
- label
- properties.[*]
- properties.options.[*]
- properties.fluidAdditionalAttributes.[*]
- renderingOptions.[*]
The translation keys are put together based on a specific pattern. In
addition, a fallback chain that depends on the form element identifiers
exists. As a result, the following translation scenarios are possible:
- translation of a form element property for a specific form and form
element
- translation of a form element property for a specific form element and
various forms
- translation of a form element property for an element type and various
forms, e.g. the ``Page`` element
The look-up process searches for translation keys in all given translation
files based on the following order:
- ``<formDefinitionIdentifier>.element.<elementIdentifier>.properties.<propertyName>``
- ``element.<formElementIdentifier>.properties.<propertyName>``
- ``element.<elementType>.properties.<propertyName>``
Form elements with option properties (``properties.options``), like the
``Select`` element, feature the following look-up process:
- ``<formDefinitionIdentifier>.element.<elementIdentifier>.properties.options.<propertyValue>``
- ``element.<elementIdentifier>.properties.options.<propertyValue>``
Example
"""""""
.. code-block:: yaml
identifier: ApplicationForm
type: Form
prototypeName: standard
label: 'Application form'
renderables:
-
identifier: GeneralInformation
type: Page
label: 'General information'
renderables:
-
identifier: LastName
type: Text
label: 'Last name'
properties:
placeholder: 'Please enter your last name.'
defaultValue: ''
-
identifier: Software
type: MultiSelect
label: 'Known software'
properties:
options:
value1: TYPO3
value2: Neos
For the form element ``LastName``, the process will look for the following
translation keys within the translation files:
- ``ApplicationForm.element.LastName.properties.label``
- ``element.LastName.properties.label``
- ``element.Text.properties.label``
If none of the above-mentioned keys exist, 'Last name' will be displayed.
For the form element ``Software``, the process will look for the following
translation keys within the translation files:
- ``ApplicationForm.element.Software.properties.label``
- ``element.Software.properties.label``
- ``element.MultiSelect.properties.label``
If none of the above-mentioned keys exist, 'Known software' will be
displayed. The option properties are addressed as follows:
- ``ApplicationForm.element.Software.properties.options.value1``
- ``element.Software.properties.options.value1``
- ``ApplicationForm.element.Software.properties.options.value2``
- ``element.Software.properties.options.value2``
If none of the above-mentioned keys exist, 'TYPO3' will be displayed as
label for the first option and 'Neos' as label for the second option.
.. _concepts-frontendrendering-translation-validationerrors:
Translation of validation messages
----------------------------------
The translation of validation messages is similar to the translation of
``form definitions``. The same translation files can be used. If the look-up
process does not find a key within the provided files, the appropriate
message of the Extbase framework will be displayed. EXT:form already
translates all of those validators by default.
As mentioned above, the translation keys are put together based on a
specific pattern. Furthermore, the fallback chain exists here as well. Thus,
the following translation scenarios are possible:
- translation of validation messages for a specific validator of a concrete
form element and concrete form
- translation of validation messages for a specific validator of various
form elements within a concrete form
- translation of validation messages for a specific validator of a concrete
form element in various forms
- translation of validation messages for a specific validator within various
forms
In Extbase, the validation messages are identified with the help of
numerical codes (UNIX timestamps). For the same validator, different codes
are valid. Read more about :ref:`concrete validator configurations <typo3.cms.form.prototypes.\<prototypeidentifier>.validatorsdefinition.\<validatoridentifier>-concreteconfigurations>`.
The look-up process searches for translation keys in all given translation
files based on the following order:
- ``<formDefinitionIdentifier>.validation.error.<elementIdentifier>.<validationErrorCode>``
- ``<formDefinitionIdentifier>.validation.error.<validationErrorCode>``
- ``validation.error.<elementIdentifier>.<validationErrorCode>``
- ``validation.error.<validationErrorCode>``
Example
"""""""
.. code-block:: yaml
identifier: ContactForm
type: Form
prototypeName: standard
label: 'Contact us'
renderables:
-
identifier: Page1
type: Page
label: 'Page 1'
renderables:
-
identifier: LastName
type: Text
label: 'Last name'
properties:
fluidAdditionalAttributes:
required: required
validators:
-
identifier: NotEmpty
Amongst others, the ``NotEmpty`` validator sends 1221560910 as ``<validationErrorCode>``.
If a user submits this form without providing a value for the field "Last
name", the ``NotEmpty`` validator fails. Now, the look-up process searches
for the following translation keys for the ``NotEmpty`` validator combined
with the form element ``LastName``:
- ContactForm.validation.error.LastName.1221560910
- ContactForm.validation.error.1221560910
- validation.error.LastName.1221560910
- validation.error.1221560910
As mentioned above, if there is no corresponding translation key available,
the default message of the Extbase framework will be shown.
.. _concepts-frontendrendering-translation-finishers:
Translation of finisher options
-------------------------------
The translation of finisher options is similar to the translation of
``form definitions``. The same translation files can be used. If the look-up
process does not find a key within all provided files, the property value
will be displayed unmodified.
As mentioned above, the translation keys are put together based on a
specific pattern. Furthermore, the fallback chain exists here as well. Thus,
the following translation scenarios are possible:
- translation of finisher options for a specific finisher of a concrete form
- translation of finisher options for a specific finisher of various forms
The look-up process searches for translation keys in all given translation
files based on the following order:
- ``<formDefinitionIdentifier>.finisher.<finisherIdentifier>.<optionName>``
- ``finisher.<finisherIdentifier>.<optionName>``
Example
"""""""
.. code-block:: yaml
identifier: ContactForm
type: Form
prototypeName: standard
label: 'Contact us'
finishers:
-
identifier: Confirmation
options:
message: 'Thank you for your inquiry.'
renderables:
...
The look-up process searches for the following translation keys for the
``<finisherIdentifier>`` 'Confirmation' and the option 'message':
- ``ContactForm.finisher.Confirmation.message``
- ``finisher.Confirmation.message``
If no translation key exists, the message 'Thank you for your inquiry.' will
be shown.
.. _concepts-frontendrendering-translation-arguments:
Form element translation arguments are supported
================================================
Form element property translations and finisher option translations can use
placeholders to output translation arguments. Translations can be enriched
with variable values by passing arguments to form element properties. The
feature was introduced with :issue:`81363`.
Form element properties
-----------------------
Pure YAML is sufficient to add simple, static values:
.. code-block:: yaml
renderables:
- identifier: field-with-translation-arguments
type: Checkbox
label: This is a %s feature
renderingOptions:
translation:
translationFile: path/to/locallang.xlf
arguments:
label:
- useful
This will produce the label: `This is a useful feature`.
Alternatively, translation arguments can be set via
:ts:`formDefinitionOverrides` in TypoScript. A common usecase is a checkbox for
user confirmation linking to details of the topic. Here it makes sense to use
YAML hashes instead of YAML lists to give sections named keys. This simplifies
references in TypoScript a lot since named keys are way more readable and also
keep the setup working in case elements are reordered. With lists and numeric
keys the TypoScript setup would also need to be updated in this case.
In the following example the list of :yaml:`renderables` has been replaced with
a hash of :yaml:`renderables` and the field :yaml:`field-with-translation-arguments`
has received a named key :yaml:`fieldWithTranslationArguments`. This key can be anything
as long as it is unique on the same level, usually simply copying the :yaml:`identifier`
should be enough:
.. code-block:: yaml
renderables:
fieldWithTranslationArguments:
identifier: field-with-translation-arguments
type: Checkbox
label: I agree to the <a href="%s">terms and conditions</a>
renderingOptions:
translation:
translationFile: path/to/locallang.xlf
The following TypoScript setup uses the named key :yaml:`fieldWithTranslationArguments` to refer
to the field and adds a page URL as translation argument:
.. code-block:: typoscript
plugin.tx_form {
settings {
formDefinitionOverrides {
<form-id> {
renderables {
0 {
# Page
renderables {
fieldWithTranslationArguments {
renderingOptions {
translation {
arguments {
label {
0 = TEXT
0.typolink {
# Terms and conditions page, could be
# set also via TypoScript constants
parameter = 42
returnLast = url
}
}
}
}
}
}
}
}
}
}
}
}
}
}
}
}
}
The :yaml:`Page` element of the form definition was not registered with a named key so a numeric
key :yaml:`0` must be used which, as mentioned above, is prone to errors when more pages are added
or pages are reordered.
.. important::
There must be at least one translation file with a translation for the
configured form element property. Arguments are not inserted into default
values defined in a form definition.
Finishers
---------
The same mechanism (YAML, YAML + TypoScript) works for finisher options:
.. code-block:: yaml
finishers:
finisherWithTranslationArguments:
identifier: EmailToReceiver
options:
subject: My %s subject
recipientAddress: foo@example.org
senderAddress: bar@example.org
translation:
translationFile: path/to/locallang.xlf
arguments:
subject:
- awesome
This will produce `My awesome subject`.
@@ -0,0 +1,26 @@
.. include:: ../Includes.txt
.. _concepts:
========
Concepts
========
Within this chapter, you will learn the basic concepts of the form framework.
It addresses your concerns as backend editor and integrator. Some of the
chapters also cover topics for developers.
.. toctree::
TargetGroupsAndMainPrinciples/Index
Configuration/Index
FormConfigurationFormDefinition/Index
FormFileStorages/Index
FrontendRendering/Index
Variants/Index
Validators/Index
Finishers/Index
FormManager/Index
FormEditor/Index
FormPlugin/Index
@@ -0,0 +1,48 @@
.. include:: ../../Includes.txt
.. _concepts-introduction:
Target groups and main principles
=================================
As :ref:`mentioned earlier<what-does-it-do>`, the ``form`` extension can be
seen as a framework which allows editors, integrators, and developers to
create and manage all kind of forms. For this task, different interfaces
and techniques are available.
Conceptually, EXT:form always tries to consider the ``form editor`` first.
The requirements for the ``form editor`` differ between the defined target
groups. On the one hand, as an integrator, you may want to manage HTML
class attributes. On the other hand, as a developer you may want to use the
``form editor`` as a kick starter for complex ``form definitions``, and you
may want to edit all possible (technical) properties you can think of.
The form extension tries to find a compromise for such cases. Since the
``form editor`` is mainly used by backend editors, only simple,
nontechnical properties are displayed and editable. However, EXT:form
allows you to easily extend the ``form editor`` by writing some YAML
configurations.
If this is not enough for your specific project, EXT:form provides a way to
integrate your own JavaScript code by utilizing the JavaScript API. Thus,
it should be possible to meet all your requirements.
Your forms can be created and defined globally in the ``form module`` and/
or loaded from extensions. Within the ``Mail form`` content element, one of
those forms can be referenced.
Furthermore, certain aspects of a form can be overridden in the plugin. This
concept allows you to reuse the same form on different pages with the same,
or a different, configuration.
The following explanations will show you that there are many ways to
manipulate the form framework in different contexts.
Those explanations are partly contradictory, depending on your use case. It
is up to you how you want to use the form framework. Be creative and share
your solution with the TYPO3 community!
This chapter attempts to describe the basics of the form framework. Check
out the reference and the example sections to get a deeper understanding of
the framework.
@@ -0,0 +1,296 @@
.. include:: ../../Includes.txt
.. _concepts-validators:
Validators
==========
The form framework ships a set of server-side validators, which implement
Extbase validators. Be aware that not all of the existing validators are
available for each form element, e.g. the "Date range validator" is
only available for the "Date" element. Furthermore, some form elements
(like "Email") already contain reasonable validators.
With the help of the form element property ``validationErrorMessages``
you can define custom validation error messages. The message can also
be set within the form editor.
.. _concepts-validators-client-side-validation:
Client-side validation
----------------------
If a form element is configured accordingly, the form framework adds
HTML 5 based frontend validation. Nevertheless, there is no JavaScript
validation included by default. We as the TYPO3 core have no plans to
opt for a specific solution. This has to be integrated manually.
Reliable and maintained projects are `Parsley <https://github.com/guillaumepotier/Parsley.js>`_
and `jQuery Validation <https://github.com/jquery-validation/jquery-validation>`_.
.. _concepts-validators-localization-client-side-validations:
Localization of client side validations
"""""""""""""""""""""""""""""""""""""""
The displayed validation message is a browser specific text. The output
is not generated by TYPO3 and therefore you cannot change it easily.
Nevertheless, there is a JavaScript solution for changing the validation
message. See `Stack Overflow <http://stackoverflow.com/questions/5272433/html5-form-required-attribute-set-custom-validation-message>`_
for more information.
.. _concepts-validators-server-side-validation:
Server-side validation
----------------------
.. _concepts-validators-alphanumeric:
Alphanumeric validator
""""""""""""""""""""""
The 'Alphanumeric validator' checks for alphanumeric strings.
Alphanumeric is defined as a combination of alphabetic and numeric
characters [A-Z + 0-9].
.. _concepts-validators-date_time:
Date/ time validator
""""""""""""""""""""
The 'Date/ time validator' checks if the given value is a valid DateTime
object. The date string is expected to be formatted according to the `W3C
standard <http://www.w3.org/TR/NOTE-datetime.html>`_ which is
"YYYY-MM-DDT##:##:##+##:##", for example "2005-08-15T15:52:01+00:00".
.. _concepts-validators-date_range:
Date range validator
""""""""""""""""""""
The 'Date range validator' checks if the given value is a valid DateTime
object and in-between a specified date range. The range can be defined by
providing a minimum and/ or maximum date. The validator has 2 options:
- Minimum date: The minimum date.
- Maximum date: The maximum date.
The properties ``minimum`` and ``maximum`` must have the format 'Y-m-d' which
represents the RFC 3339 'full-date' format.
Read more: https://www.w3.org/TR/2011/WD-html-markup-20110405/input.date.html
The input must be a DateTime object. This input can be tested against a minimum
date and a maximum date. The minimum date and the maximum date are strings. The minimum
date and the maximum date can be configured through the validator options.
.. _concepts-validators-email:
Email validator
"""""""""""""""
The 'Email validator' checks if the given value is a valid email address.
The format of a valid email address is defined in `RFC 3696 <http://tools.ietf.org/html/rfc3696>`_.
The standard allows international characters and the multiple appearance
of the @ sign.
.. _concepts-validators-empty:
Empty validator
"""""""""""""""
The 'Empty validator' checks if the given value is not empty (NULL,
empty string, empty array or empty object).
.. _concepts-validators-filesize:
File size validator
"""""""""""""""""""
The 'File size validator' validates a file resource regarding its file
size. The validator has 2 options:
- Minimum: The minimum file size to accept.
- Maximum: The maximum file size to accept.
Use the format <size>B|K|M|G when entering file sizes. For example: 10M
means 10 megabytes. Please keep in mind that the maximum file size also
depends on the php.ini settings of your environment.
.. _concepts-validators-floating_point:
Floating-point number validator
"""""""""""""""""""""""""""""""
The 'Floating-point number validator' checks if the given value is of
type float or a string matching the regular expression [0-9.e+-].
.. _concepts-validators-integer:
Integer number validator
""""""""""""""""""""""""
The 'Integer number validator' checks if the given value is a valid
integer.
.. _concepts-validators-text:
Non-XML text validator
""""""""""""""""""""""
The 'Non-XML text validator' checks if the given value is a valid text
(contains no XML tags). This basically means, that tags are stripped.
In this special case quotes are not encoded (see `filter_var()
<http://php.net/filter_var>`_ for more information.
Be aware that the value of this check entirely depends on the output
context. The validated text is not expected to be secure in every
circumstance, if you want to be sure of that, use a customized regular
expression or filter on output.
.. _concepts-validators-count:
Number of submitted values validator
""""""""""""""""""""""""""""""""""""
The 'Number of submitted values validator' checks if the given value
contains the specified amount of elements. The validator has 2 options:
- Minimum: The minimum number of submitted values.
- Maximum: The maximum number of submitted values.
.. _concepts-validators-number_range:
Number range validator
""""""""""""""""""""""
The 'Number range validator' checks if the given value is a number in
the specified range. The validator has 2 options:
- Minimum: The minimum value to accept.
- Maximum: The maximum vlaue to accept.
.. _concepts-validators-mimetype:
MimeType validator
""""""""""""""""""
The 'MimeType validator' checks if the given value is a FileReference
of the configured type (one of the */* IANA media types).
.. _concepts-validators-string_length:
String length validator
"""""""""""""""""""""""
The 'String length validator' checks if the given value is a valid string
and its length is in the specified range. The validator has 2 options:
- Minimum: The minimum length of the string.
- Maximum: The maximum length of the string.
.. _concepts-validators-regular_expressions:
Regular expression validator
""""""""""""""""""""""""""""
The 'Regular expression validator' checks if the given value matches
the specified regular expression. Delimiters or modifiers are not
supported. The validator has 1 option:
- Regular expression: The regular expression to use for validation.
Imagine the following example. You want the user to provide a domain
name. The submitted value shall only contain the second and the top
level domain, e.g. "typo3.org" instead of "https://typo3.org". The
regular expression for this use case would be
:code:`/^[-a-z0-9]+\.[a-z]{2,6}$/`.
.. _concepts-validators-validation-message-translation:
Translation of validation messages
----------------------------------
To learn more about this topic, please continue :ref:`here<concepts-frontendrendering-translation-validationerrors>`.
.. _concepts-validators-customvalidatorimplementations:
Custom validator implementations
--------------------------------
Validators belong to a certain ``prototype`` and are defined within the
``validatorsDefinition``. The property ``implementationClassName`` is used
for the validator implementation.
.. code-block:: yaml
TYPO3:
CMS:
Form:
prototypes:
standard:
validatorsDefinition:
Custom:
implementationClassName: 'VENDOR\MySitePackage\Domain\Validation\CustomValidator'
You can provide options for your validator using the property ``options``.
Those will be used as default values which can be overridden within a
specific ``form definition``.
Define the default value of the option ``yourCustomOption``:
.. code-block:: yaml
TYPO3:
CMS:
Form:
prototypes:
standard:
validatorsDefinition:
Custom:
implementationClassName: 'VENDOR\MySitePackage\Domain\Validation\CustomValidator'
options:
yourCustomOption: 'Jurian'
Override the default value within your ``form definition``:
.. code-block:: yaml
identifier: sample-form
label: 'Simple Contact Form'
prototype: standard
type: Form
renderables:
-
identifier: subject
label: 'Name'
type: Text
validators:
-
identifier: Custom
options:
yourCustomOption: 'Mathias'
As mentioned above EXT:form implements Extbase validators. That said,
your own validators should extend ``TYPO3\CMS\Extbase\Validation\Validator\AbstractValidator``.
Read more about this topic in the `Extbase docs <https://docs.typo3.org/typo3cms/ExtbaseFluidBook/9-CrosscuttingConcerns/2-validating-domain-objects.html>`_.
@@ -0,0 +1,639 @@
.. include:: ../../Includes.txt
.. _concepts-variants:
Variants
========
.. _concepts-variants-basics:
Basics
------
Variants allow you to change properties of form elements, validators,
and finishers and are activated by conditions. This allows you among
other things:
* translating form element values depending on the frontend language
* setting and removing validators of one form element depending on the
value of another form element
* hiding entire steps (form pages) depending on the value of a form
element
* setting finisher options depending on the value of a form element
* hiding a form element in certain finishers and on the summary step
Variants are defined on the form element level either statically in
form definitions or created programmatically through an API. The
variants defined within a form definition are automatically applied to
the form based on their conditions at runtime. Programmatically,
variants can be applied at any time.
Furthermore, conditions of a variant can be evaluated programmatically
at any time. However, some conditions are only available at runtime,
for example a check for a form element value.
Custom conditions and operators can be added easily.
Only the form element properties listed in a variant are applied to the
form element, all other properties are retained. An exception to this
rule are finishers and validators. If finishers or validators are
**not** defined within a variant, the original finishers and validators
will be used. If at least one finisher or validator is defined in a
variant, the originally defined finishers or validators are overwritten
by the list of finishers and validators of the variant.
Variants defined within a form definition are **all** processed and
applied in the order of their matching conditions. This means if
variant 1 sets the label of a form element to "X" and variant 2 sets
the label to "Y", then variant 2 is applied, i.e. the label will be "Y".
.. note::
At the current state it is **not** possible to define variants in
the UI of the form editor.
.. _concepts-variants-enabled-property:
Rendering option ``enabled``
----------------------------
The rendering option :yaml:`enabled` is available for all finishers and
all form elements - except the root form element and the first form
page. The option accepts a boolean value (:yaml:`true` or :yaml:`false`).
Setting :yaml:`enabled: true` for a form element renders it in the
frontend and enables processing of its value including property mapping
and validation. Setting :yaml:`enabled: false` disables the form
element in the frontend. All form elements and finishers except the root form element and the first form page can be enabled
or disabled.
Setting :yaml:`enabled: true` for a finisher executes it when
submitting forms. Setting :yaml:`enabled: false` skips the finisher.
By default, :yaml:`enabled` is set to :yaml:`true`.
See :ref:`examples<concepts-variants-examples-hide-form-elements>`
below to learn more about using this rendering option.
.. _concepts-variants-definition:
Definition of variants
----------------------
Variants are defined on the form element level. Check the following -
incomplete - example:
.. code-block:: yaml
type: Text
identifier: text-1
label: Foo
variants:
-
identifier: variant-1
condition: 'formValues["checkbox-1"] == 1'
# If the condition matches, the label property of the form
# element is set to the value 'Bar'
label: Bar
As usual, :yaml:`identifier` must be a unique name of the variant on
the form element level.
Each variant has a single :yaml:`condition` which applies the variants'
changes as soon as the condition matches. In addition, the remaining
properties are applied to the form element as well. In the
aforementioned example the label of the form element :yaml:`text-1` is
changed to ``Bar`` if the checkbox :yaml:`checkbox-1` is checked.
The following properties can be overwritten by variants within the
topmost element (:yaml:`Form`):
* :yaml:`label`
* :yaml:`renderingOptions`
* :yaml:`finishers`
* :yaml:`rendererClassName`
The following properties can be overwritten by variants within all of
the other form elements:
* :yaml:`enabled`
* :yaml:`label`
* :yaml:`defaultValue`
* :yaml:`properties`
* :yaml:`renderingOptions`
* :yaml:`validators`
.. note::
To selectively unset list items in variants like select options the special value :code:`__UNSET` can be used as value for the item to remove.
.. _concepts-variants-conditions:
Conditions
----------
The form framework uses the Symfony component `expression language <https://symfony.com/doc/4.1/components/expression_language.html>`_.
Here, an expression is a one-liner that returns a boolean value like
:yaml:`applicationContext matches "#Production/Local#"`. Please check
the `Symfony docs <https://symfony.com/doc/4.1/components/expression_language/syntax.html>`_
to learn more about this topic. The form framework extends the
expression language with some variables which can be used to access
form values and environment settings.
``formRuntime`` (object)
^^^^^^^^^^^^^^^^^^^^^^^^
You can access every public method from the :php:`\TYPO3\CMS\Form\Domain\Runtime\FormRuntime`,
learn more :ref:`here<apireference-frontendrendering-programmatically-apimethods-formruntime>`.
For example:
:yaml:`formRuntime.getIdentifier() == "test"`.
``formValues`` (array)
^^^^^^^^^^^^^^^^^^^^^^
:yaml:`formValues` holds all the submitted form element values. Each
key within this array represents a form element identifier.
For example:
:yaml:`formValues["text-1"] == "yes"`.
``stepIdentifier`` (string)
^^^^^^^^^^^^^^^^^^^^^^^^^^^
:yaml:`stepIdentifier` is set to the :yaml:`identifier` of the current
step.
For example:
:yaml:`stepIdentifier == "page-1"`.
``stepType`` (string)
^^^^^^^^^^^^^^^^^^^^^
:yaml:`stepType` is set to the :yaml:`type` of the current step.
For example:
:yaml:`stepType == "SummaryPage"`.
``finisherIdentifier`` (string)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
:yaml:`finisherIdentifier` is set to the :yaml:`identifier` of the
current finisher or an empty string (while no finishers are executed).
For example:
:yaml:`finisherIdentifier == "EmailToSender"`.
``siteLanguage`` (object)
^^^^^^^^^^^^^^^^^^^^^^^^^
You can access every public method from :php:`\TYPO3\CMS\Core\Site\Entity\SiteLanguage`.
The most needed ones are for sure:
* getLanguageId() / Aka sys_language_uid.
* getLocale() / The language locale. Something like 'en_US.UTF-8'.
* getTypo3Language() / The language key for XLF files. Something like
'de' or 'default'.
* getTwoLetterIsoCode() / Returns the ISO-639-1 language ISO code.
Something like 'de'.
For example:
:yaml:`siteLanguage("locale") == "de_DE"`.
``applicationContext`` (string)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
:yaml:`applicationContext` is set to the application context
(@see GeneralUtility::getApplicationContext()).
For example:
:yaml:`applicationContext matches "#Production/Local#"`.
``contentObject`` (array)
^^^^^^^^^^^^^^^^^^^^^^^^^
:yaml:`contentObject` is set to the data of the current content object
or to an empty array if no content object is available.
For example:
:yaml:`contentObject["pid"] in [23, 42]`.
.. _concepts-variants-programmatically:
Working with variants programmatically
--------------------------------------
Create a variant with conditions through the PHP API::
/** @var TYPO3\CMS\Form\Domain\Model\Renderable\RenderableVariantInterface $variant */
$variant = $formElement->createVariant([
'identifier' => 'variant-1',
'condition' => 'formValues["checkbox-1"] == 1',
'label' => 'foo',
]);
Get all variants of a form element::
/** @var TYPO3\CMS\Form\Domain\Model\Renderable\RenderableVariantInterface[] $variants */
$variants = $formElement->getVariants();
Apply a variant to a form element regardless of its defined conditions::
$formElement->applyVariant($variant);
.. _concepts-variants-examples:
Examples
--------
Here are some complex examples to show you the possibilities of the
form framework.
.. _concepts-variants-examples-translation:
Translation of form elements
^^^^^^^^^^^^^^^^^^^^^^^^^^^^
In this example form elements are translated differently depending on
the frontend language.
.. code-block:: yaml
type: Form
prototypeName: standard
identifier: contact-form
label: Kontaktformular
renderingOptions:
submitButtonLabel: Senden
variants:
-
identifier: language-variant-1
condition: 'siteLanguage("locale") == "en_US.UTF-8"'
label: Contact form
renderingOptions:
submitButtonLabel: Submit
renderables:
-
type: Page
identifier: page-1
label: Kontaktdaten
renderingOptions:
previousButtonLabel: zurück
nextButtonLabel: weiter
variants:
-
identifier: language-variant-1
condition: 'siteLanguage("locale") == "en_US.UTF-8"'
label: Contact data
renderingOptions:
previousButtonLabel: Previous step
nextButtonLabel: Next step
renderables:
-
type: Text
identifier: text-1
label: Vollständiger Name
properties:
fluidAdditionalAttributes:
placeholder: Ihre vollständiger Name
variants:
-
identifier: language-variant-1
condition: 'siteLanguage("locale") == "en_US.UTF-8"'
label: Full name
properties:
fluidAdditionalAttributes:
placeholder: Your full name
.. _concepts-variants-examples-validation:
Adding validators dynamically
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
In this example a bunch of validators are added to the field
:yaml:`email-address` depending on the value of the form element
:yaml:`checkbox-1`.
.. code-block:: yaml
type: Form
prototypeName: standard
identifier: newsletter-subscription
label: Newsletter Subscription
renderables:
-
type: Page
identifier: page-1
label: General data
renderables:
-
type: Text
identifier: email-address
label: Email address
defaultValue:
variants:
-
identifier: validation-1
condition: 'formValues["checkbox-1"] == 1'
properties:
fluidAdditionalAttributes:
required: required
validators:
-
identifier: NotEmpty
-
identifier: EmailAddress
-
type: Checkbox
identifier: checkbox-1
label: Check this and email will be mandatory
.. _concepts-variants-examples-hide-form-elements:
Hide form elements
^^^^^^^^^^^^^^^^^^
In this extensive example the form element :yaml:`email-address` has
been enabled explicitly but it is fine to leave this out since this is
the default state. The form element :yaml:`text-3` has been disabled
completely, for example to temporarily remove it from the form. The
field :yaml:`text-1` is hidden in all finishers and on the summary step.
The :yaml:`EmailToSender` finisher takes the fact into account that
finishers can refer to form values. It is only enabled if the form
element :yaml:`checkbox-1` has been activated by the user. Otherwise,
the finisher is skipped.
.. code-block:: yaml
type: Form
prototypeName: standard
identifier: hidden-field-form
label: Hidden field form
finishers:
-
identifier: EmailToReceiver
options:
subject: Yes, I am ready
recipientAddress: tritum@example.org
recipientName: TRITUM
senderAddress: tritum@example.org
senderName: tritum@example.org
-
identifier: EmailToSender
options:
subject: This is a copy of the form data
recipientAddress: '{email-address}'
senderAddress: tritum@example.org
senderName: tritum@example.org
renderingOptions:
enabled: '{checkbox-1}'
renderables:
-
type: Page
identifier: page-1
label: General data
renderables:
-
type: Text
identifier: text-1
label: A field hidden on confirmation step and in all mails (finishers)
variants:
-
identifier: hide-1
renderingOptions:
enabled: false
condition: 'stepType == "SummaryPage" || finisherIdentifier in ["EmailToSender", "EmailToReceiver"]'
-
type: Text
identifier: email-address
label: Email address
properties:
fluidAdditionalAttributes:
required: required
renderingOptions:
enabled: true
-
type: Text
identifier: text-3
label: A temporarily disabled field
renderingOptions:
enabled: false
-
type: Checkbox
identifier: checkbox-1
label: Check this and the sender gets an email
-
type: SummaryPage
identifier: summarypage-1
label: Confirmation
.. _concepts-variants-examples-hide-steps:
Hide steps
^^^^^^^^^^
In this example the second step :yaml:`page-2` is disabled if the field
:yaml:`checkbox-1` is checked. Furthermore, the form element
:yaml:`checkbox-1` is disabled on the summary step.
.. code-block:: yaml
type: Form
prototypeName: standard
identifier: multi-step-form
label: Muli step form
renderables:
-
type: Page
identifier: page-1
label: First step
renderables:
-
type: Text
identifier: text-1
label: A field
-
type: Checkbox
identifier: checkbox-1
label: Check this and the next step will be skipped
variants:
-
identifier: variant-1
condition: 'stepType == "SummaryPage"'
renderingOptions:
enabled: false
-
type: Page
identifier: page-2
label: Second step
variants:
-
identifier: variant-2
condition: 'formValues["checkbox-1"] == 1'
renderingOptions:
enabled: false
renderables:
-
type: Text
identifier: text-2
label: Another field
-
type: SummaryPage
identifier: summarypage-1
label: Confirmation
.. _concepts-variants-examples-finisher:
Set finisher values dynamically
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
In this example finisher values are set differently depending on the
application context.
.. code-block:: yaml
type: Form
prototypeName: standard
identifier: finisher-condition-example
label: Finishers under condition
finishers:
-
identifier: Confirmation
options:
message: I am NOT a local environment.
variants:
-
identifier: variant-1
condition: 'applicationContext matches "#Production/Local#"'
finishers:
-
identifier: Confirmation
options:
message: I am a local environment.
renderables:
-
type: Page
identifier: page-1
label: General data
renderables:
-
type: Text
identifier: text-1
label: A field
.. _concepts-variants-examples-remove-options:
Remove select options
^^^^^^^^^^^^^^^^^^^^^
In this example a select option is removed for a specific locale.
.. code-block:: yaml
type: Form
prototypeName: standard
identifier: option-remove-example
label: Options removed under condition
renderables:
-
type: Page
identifier: page-1
label: Step
renderables:
-
identifier: salulation
type: SingleSelect
label: Salutation
properties:
options:
'': '---'
mr: Mr.
mrs: Mrs.
miss: Miss
defaultValue: ''
variants:
-
identifier: salulation-variant
condition: 'siteLanguage("locale") == "zh_CN.utf-8"'
properties:
options:
miss: __UNSET
.. _concepts-variants-custom-language-providers:
Adding own expression language providers
----------------------------------------
If you need to extend the expression language with custom functions you
can extend it. For more information check the official `docs <https://symfony.com/doc/4.1/components/expression_language/extending.html#using-expression-providers>`_.
Register the expression language provider within the form setup and
provide the functionality you need. Make sure your expression language
provider implements :php:`Symfony\Component\ExpressionLanguage\ExpressionFunctionProviderInterface`.
.. code-block:: yaml
TYPO3:
CMS:
Form:
prototypes:
standard:
conditionContextDefinition:
expressionLanguageProvider:
MyCustomExpressionLanguageProvider:
implementationClassName: '\Vendor\MyExtension\CustomExpressionLanguageProvider'
.. _concepts-variants-custom-language-variables:
Adding own expression language variables
----------------------------------------
If you need to add custom variables to the expression language you can
extend it. Then the variables are ready to be checked in conditions.
Register the variable provider within the form setup. Make sure your
expression language variable provider implements :php:`TYPO3\CMS\Form\Domain\Condition\ExpressionLanguageVariableProviderInterface`.
.. code-block:: yaml
TYPO3:
CMS:
Form:
prototypes:
standard:
conditionContextDefinition:
expressionLanguageVariableProvider:
MyCustomExpressionLanguageVariableProvider:
implementationClassName: '\Vendor\MyExtension\CustomExpressionLanguageVariableProvider'
@@ -0,0 +1,18 @@
.. include:: ../Includes.txt
.. _configurationreference:
=======================
Configuration Reference
=======================
This chapter is a complete reference of the possible configuration settings.
It addresses your concerns as and integrator and developer.
.. toctree::
persistenceManager/Index
proto/Index
formManager/Index
configuration/Index
File diff suppressed because it is too large. Load diff
@@ -0,0 +1,436 @@
.. include:: ../../Includes.txt
.. _typo3.cms.form.formmanager:
=============
[formManager]
=============
.. _typo3.cms.form.formmanager-properties:
Properties
==========
.. _typo3.cms.form.formmanager.dynamicrequirejsmodules.app:
dynamicRequireJsModules.app
---------------------------
:aspect:`Option path`
TYPO3.CMS.Form.formManager.dynamicRequireJsModules.app
:aspect:`Data type`
string
:aspect:`Needed by`
Backend (form manager)
:aspect:`Mandatory`
Yes
:aspect:`Default value`
.. code-block:: yaml
:linenos:
:emphasize-lines: 2
dynamicRequireJsModules:
app: TYPO3/CMS/Form/Backend/FormManager
viewModel: TYPO3/CMS/Form/Backend/FormManager/ViewModel
:aspect:`Description`
Internal setting. RequireJS path for the form manager JavaScript app.
.. _typo3.cms.form.formmanager.dynamicrequirejsmodules.viewmodel:
dynamicRequireJsModules.viewModel
---------------------------------
:aspect:`Option path`
TYPO3.CMS.Form.formManager.dynamicRequireJsModules.viewModel
:aspect:`Data type`
string
:aspect:`Needed by`
Backend (form manager)
:aspect:`Mandatory`
Yes
:aspect:`Default value`
.. code-block:: yaml
:linenos:
:emphasize-lines: 3
dynamicRequireJsModules:
app: TYPO3/CMS/Form/Backend/FormManager
viewModel: TYPO3/CMS/Form/Backend/FormManager/ViewModel
:aspect:`Description`
Internal setting. RequireJS path for the form manager JavaScript view model.
.. _typo3.cms.form.formmanager.stylesheets:
stylesheets
-----------
:aspect:`Option path`
TYPO3.CMS.Form.formManager.stylesheets
:aspect:`Data type`
array
:aspect:`Needed by`
Backend (form manager)
:aspect:`Mandatory`
Yes
:aspect:`Default value`
.. code-block:: yaml
:linenos:
stylesheets:
100: 'EXT:form/Resources/Public/Css/form.css'
:aspect:`Description`
Internal setting. Path for the form manager CSS file.
.. _typo3.cms.form.formmanager.translationfile:
translationFile
---------------
:aspect:`Option path`
TYPO3.CMS.Form.formManager.translationFile
:aspect:`Data type`
string/ array
:aspect:`Needed by`
Backend (form manager)
:aspect:`Mandatory`
Yes
:aspect:`Default value`
.. code-block:: yaml
:linenos:
translationFile: 'EXT:form/Resources/Private/Language/Database.xlf'
:aspect:`Good to know`
:ref:`Translate "Start template" options<concepts-formmanager-translation-starttemplate>`
:aspect:`Description`
The translation file(s) which should be used to translate parts of the form manager.
.. _typo3.cms.form.formmanager.javascripttranslationfile:
javaScriptTranslationFile
-------------------------
:aspect:`Option path`
TYPO3.CMS.Form.formManager.javaScriptTranslationFile
:aspect:`Data type`
string
:aspect:`Needed by`
Backend (form manager)
:aspect:`Mandatory`
Yes
:aspect:`Default value`
.. code-block:: yaml
:linenos:
javaScriptTranslationFile: 'EXT:form/Resources/Private/Language/locallang_formManager_javascript.xlf'
:aspect:`Description`
Internal setting. Path for the inline language labels for the form manager app.
.. _typo3.cms.form.formmanager.selectableprototypesconfiguration:
selectablePrototypesConfiguration
---------------------------------
:aspect:`Option path`
TYPO3.CMS.Form.formManager.selectablePrototypesConfiguration
:aspect:`Data type`
array
:aspect:`Needed by`
Backend (form manager)
:aspect:`Mandatory`
Yes
:aspect:`Default value`
.. code-block:: yaml
:linenos:
selectablePrototypesConfiguration:
100:
identifier: standard
label: formManager.selectablePrototypesConfiguration.standard.label
newFormTemplates:
100:
templatePath: 'EXT:form/Resources/Private/Backend/Templates/FormEditor/Yaml/NewForms/BlankForm.yaml'
label: formManager.selectablePrototypesConfiguration.standard.newFormTemplates.blankForm.label
200:
templatePath: 'EXT:form/Resources/Private/Backend/Templates/FormEditor/Yaml/NewForms/SimpleContactForm.yaml'
label: formManager.selectablePrototypesConfiguration.standard.newFormTemplates.simpleContactForm.label
:aspect:`Good to know`
- :ref:`"Start templates"<concepts-formmanager-starttemplate>`
- :ref:`Translate "Start template" options<concepts-formmanager-translation-starttemplate>`
:aspect:`Description`
Array with numerical Keys. Configure the ``Start template`` selection list within the ``form manager`` "Advanced settings" step.
.. _typo3.cms.form.formmanager.selectableprototypesconfiguration.*.identifier:
selectablePrototypesConfiguration.*.identifier
----------------------------------------------
:aspect:`Option path`
TYPO3.CMS.Form.formManager.selectablePrototypesConfiguration.*.identifier
:aspect:`Data type`
string
:aspect:`Needed by`
Backend (form manager)
:aspect:`Mandatory`
Yes
:aspect:`Related options`
- :ref:`TYPO3.CMS.Form.prototypes <typo3.cms.form.prototypes>`
:aspect:`Good to know`
- :ref:`"Start templates"<concepts-formmanager-starttemplate>`
:aspect:`Description`
Reference to a ``prototype`` which should be used for the newly created form definition.
.. _typo3.cms.form.formmanager.selectableprototypesconfiguration.*.label:
selectablePrototypesConfiguration.*.label
-----------------------------------------
:aspect:`Option path`
TYPO3.CMS.Form.formManager.selectablePrototypesConfiguration.*.label
:aspect:`Data type`
string
:aspect:`Needed by`
Backend (form manager)
:aspect:`Mandatory`
Yes
:aspect:`Good to know`
- :ref:`"Start templates"<concepts-formmanager-starttemplate>`
- :ref:`Translate "Start template" options<concepts-formmanager-translation-starttemplate>`
:aspect:`Description`
The ``Form prototype`` selectlist label for this ``prototype`` within the ``form manager`` "Advanced settings" step.
.. _typo3.cms.form.formmanager.selectableprototypesconfiguration.*.newformtemplates:
selectablePrototypesConfiguration.*.newFormTemplates
----------------------------------------------------
:aspect:`Option path`
TYPO3.CMS.Form.formManager.selectablePrototypesConfiguration.*.newFormTemplates
:aspect:`Data type`
array
:aspect:`Needed by`
Backend (form manager)
:aspect:`Mandatory`
Yes
:aspect:`Default value`
.. code-block:: yaml
:linenos:
:emphasize-lines: 5-
selectablePrototypesConfiguration:
100:
identifier: standard
label: formManager.selectablePrototypesConfiguration.standard.label
newFormTemplates:
100:
templatePath: 'EXT:form/Resources/Private/Backend/Templates/FormEditor/Yaml/NewForms/BlankForm.yaml'
label: formManager.selectablePrototypesConfiguration.standard.newFormTemplates.blankForm.label
200:
templatePath: 'EXT:form/Resources/Private/Backend/Templates/FormEditor/Yaml/NewForms/SimpleContactForm.yaml'
label: formManager.selectablePrototypesConfiguration.standard.newFormTemplates.simpleContactForm.label
:aspect:`Good to know`
- :ref:`"Start templates"<concepts-formmanager-starttemplate>`
- :ref:`Translate "Start template" options<concepts-formmanager-translation-starttemplate>`
:aspect:`Description`
Array with numerical Keys. Configure the ``Start templates`` selectlist for this ``prototype`` within the ``form manager`` "Advanced settings" step.
.. _typo3.cms.form.formmanager.selectableprototypesconfiguration.*.newformtemplates.*.templatepath:
selectablePrototypesConfiguration.*.newFormTemplates.*.templatePath
-------------------------------------------------------------------
:aspect:`Option path`
TYPO3.CMS.Form.formManager.selectablePrototypesConfiguration.*.newFormTemplates.*.templatePath
:aspect:`Data type`
string
:aspect:`Needed by`
Backend (form manager)
:aspect:`Mandatory`
Yes
:aspect:`Good to know`
- :ref:`"Start templates"<concepts-formmanager-starttemplate>`
- :ref:`Translate "Start template" options<concepts-formmanager-translation-starttemplate>`
:aspect:`Description`
The filesystem path to the `Start template`` YAML file.
.. _typo3.cms.form.formmanager.selectableprototypesconfiguration.*.newformtemplates.*.label:
selectablePrototypesConfiguration.*.newFormTemplates.*.label
------------------------------------------------------------
:aspect:`Option path`
TYPO3.CMS.Form.formManager.selectablePrototypesConfiguration.*.newFormTemplates.*.label
:aspect:`Data type`
string
:aspect:`Needed by`
Backend (form manager)
:aspect:`Mandatory`
Yes
:aspect:`Good to know`
- :ref:`"Start templates"<concepts-formmanager-starttemplate>`
- :ref:`Translate "Start template" options<concepts-formmanager-translation-starttemplate>`
:aspect:`Description`
The ``Start template`` selectlist label for this ``Start template`` within the ``form manager`` "Advanced settings" step.
.. _typo3.cms.form.formmanager.controller:
controller
----------
:aspect:`Option path`
TYPO3.CMS.Form.formManager.controller
:aspect:`Data type`
array
:aspect:`Needed by`
Backend (form manager)
:aspect:`Mandatory`
Yes
:aspect:`Default value`
.. code-block:: yaml
:linenos:
controller:
deleteAction:
errorTitle: formManagerController.deleteAction.error.title
errorMessage: formManagerController.deleteAction.error.body
:aspect:`Description`
Internal setting. Configure the ``form manager`` flash message texts.
.. _typo3.cms.form.formmanager.controller.deleteaction.errortitle:
controller.deleteAction.errorTitle
----------------------------------
:aspect:`Option path`
TYPO3.CMS.Form.formManager.controller.deleteAction.errorTitle
:aspect:`Data type`
string
:aspect:`Needed by`
Backend (form manager)
:aspect:`Mandatory`
Yes
:aspect:`Default value`
.. code-block:: yaml
:linenos:
:emphasize-lines: 3
controller:
deleteAction:
errorTitle: formManagerController.deleteAction.error.title
errorMessage: formManagerController.deleteAction.error.body
:aspect:`Description`
Internal setting. Configure the ``form manager`` flash message texts.
.. _typo3.cms.form.formmanager.controller.deleteaction.errormessage:
controller.deleteAction.errorMessage
------------------------------------
:aspect:`Option path`
TYPO3.CMS.Form.formManager.controller.deleteAction.errorMessage
:aspect:`Data type`
string
:aspect:`Needed by`
Backend (form manager)
:aspect:`Mandatory`
Yes
:aspect:`Default value`
.. code-block:: yaml
:linenos:
:emphasize-lines: 4
controller:
deleteAction:
errorTitle: formManagerController.deleteAction.error.title
errorMessage: formManagerController.deleteAction.error.body
:aspect:`Description`
Internal setting. Configure the ``form manager`` flash message texts.
@@ -0,0 +1,146 @@
.. include:: ../../Includes.txt
.. _typo3.cms.form.persistencemanager:
====================
[persistenceManager]
====================
.. _typo3.cms.form.persistencemanager-properties:
Properties
==========
.. _typo3.cms.form.persistencemanager.allowedfilemounts:
allowedFileMounts
-----------------
:aspect:`Option path`
TYPO3.CMS.Form.persistenceManager.allowedFileMounts
:aspect:`Data type`
array
:aspect:`Needed by`
Frontend/ Backend (form manager/ form editor/ plugin)
:aspect:`Mandatory`
Yes (if :ref:`allowedExtensionPaths <TYPO3.CMS.Form.persistenceManager.allowedExtensionPaths>` is not set)
:aspect:`Default value`
.. code-block:: yaml
:linenos:
:emphasize-lines: 3
persistenceManager:
allowedFileMounts:
10: '1:/form_definitions/'
:aspect:`Good to know`
:ref:`Form/ File storages<concepts-form-file-storages>`
:aspect:`Description`
EXT:form stores the form definitions within the file system and thus needs
write access to this storage. By default, the folder ``form_definitions`` is
created and used. It is possible to configure a different and/ or an additional
filemount which is then utilized for storing and reading forms.
.. _typo3.cms.form.persistencemanager.allowSaveToExtensionPaths:
allowSaveToExtensionPaths
-------------------------
:aspect:`Option path`
TYPO3.CMS.Form.persistenceManager.allowSaveToExtensionPaths
:aspect:`Data type`
bool
:aspect:`Needed by`
Backend (form manager)
:aspect:`Mandatory`
Yes
:aspect:`Default value`
.. code-block:: yaml
:linenos:
:emphasize-lines: 2
persistenceManager:
allowSaveToExtensionPaths: false
:aspect:`Good to know`
:ref:`Form/ File storages<concepts-form-file-storages>`
:aspect:`Description`
Set this to ``true`` if you want to allow backend users to **edit** forms stored within your own extension.
.. _typo3.cms.form.persistencemanager.allowDeleteFromExtensionPaths:
allowDeleteFromExtensionPaths
-----------------------------
:aspect:`Option path`
TYPO3.CMS.Form.persistenceManager.allowDeleteFromExtensionPaths
:aspect:`Data type`
bool
:aspect:`Needed by`
Backend (form manager)
:aspect:`Mandatory`
Yes
:aspect:`Default value`
.. code-block:: yaml
:linenos:
:emphasize-lines: 2
persistenceManager:
allowDeleteFromExtensionPaths: false
:aspect:`Good to know`
:ref:`Form/ File storages<concepts-form-file-storages>`
:aspect:`Description`
Set this to ``true`` if you want to allow backend users to **delete** forms stored within your own extension.
.. _typo3.cms.form.persistencemanager.allowedExtensionPaths:
allowedExtensionPaths
---------------------
:aspect:`Option path`
TYPO3.CMS.Form.persistenceManager.allowedExtensionPaths
:aspect:`Data type`
array
:aspect:`Needed by`
Frontend/ Backend (form manager/ form editor/ plugin)
:aspect:`Mandatory`
Yes (if :ref:`allowedFileMounts <TYPO3.CMS.Form.persistenceManager.allowedFileMounts>` is not set)
:aspect:`Default value`
undefined
:aspect:`Good to know`
:ref:`Form/ File storages<concepts-form-file-storages>`
:aspect:`Description`
Define the paths to folders which contain forms within your own extension.
For example:
.. code-block:: yaml
allowedExtensionPaths:
10: EXT:my_site_package/Resources/Private/Forms/
@@ -0,0 +1,95 @@
.. include:: ../../Includes.txt
.. _typo3.cms.form.prototypes:
============
[prototypes]
============
.. _typo3.cms.form.prototypes-properties:
Properties
==========
.. _typo3.cms.form.prototypes.*:
prototypes
----------
:aspect:`Option path`
TYPO3.CMS.Form.prototypes
:aspect:`Data type`
array
:aspect:`Needed by`
Frontend/ Backend (form manager/ form editor/ plugin)
:aspect:`Mandatory`
Yes
:aspect:`Default value`
.. code-block:: yaml
:linenos:
prototypes:
standard:
[...]
:aspect:`Good to know`
- :ref:`"Prototypes"<concepts-configuration-prototypes>`
- :ref:`"Form configuration vs. form definition"<concepts-formdefinition-vs-formconfiguration>`
:aspect:`Description`
Array which defines the available prototypes. Every key within this array is called the ``<prototypeIdentifier>``.
.. _typo3.cms.form.prototypes.<prototypeidentifier>:
<prototypeIdentifier>
---------------------
:aspect:`Option path`
TYPO3.CMS.Form.prototypes.<prototypeIdentifier>
:aspect:`Data type`
array
:aspect:`Needed by`
Frontend/ Backend (form manager/ form editor/ plugin)
:aspect:`Mandatory`
Yes
:aspect:`Related options`
- :ref:`"TYPO3.CMS.Form.formManager.selectablePrototypesConfiguration.*.identifier"<typo3.cms.form.formmanager.selectableprototypesconfiguration.*.identifier>`
:aspect:`Default value`
.. code-block:: yaml
:linenos:
:emphasize-lines: 2
prototypes:
standard:
[...]
:aspect:`Good to know`
- :ref:`"Prototypes"<concepts-configuration-prototypes>`
- :ref:`"Form configuration vs. form definition"<concepts-formdefinition-vs-formconfiguration>`
:aspect:`Description`
This array key identifies the `prototype``. Every ``form definition`` references to such a ``<prototypeIdentifier>`` through the property ``prototypeName``.
Subproperties
=============
.. toctree::
formElements/Index
finishersDefinition/Index
validatorsDefinition/Index
formEditor/Index
formEngine/Index
@@ -0,0 +1,395 @@
.. include:: ../../../Includes.txt
.. _typo3.cms.form.prototypes.<prototypeidentifier>.finishersdefinition:
=====================
[finishersDefinition]
=====================
.. _typo3.cms.form.prototypes.<prototypeidentifier>.finishersdefinition-properties:
Properties
==========
.. _typo3.cms.form.prototypes.<prototypeidentifier>.finishersdefinition.*:
[finishersDefinition]
---------------------
:aspect:`Option path`
TYPO3.CMS.Form.prototypes.<prototypeIdentifier>.finishersDefinition
:aspect:`Data type`
array
:aspect:`Needed by`
Frontend/ Backend (form editor)
:aspect:`Mandatory`
Yes
:aspect:`Default value`
.. code-block:: yaml
:linenos:
prototypes:
<prototypeIdentifier>:
finishersDefinition:
[...]
:aspect:`Good to know`
- :ref:`"Custom finisher implementations"<concepts-finishers-customfinisherimplementations>`
:aspect:`Description`
Array which defines the available finishers. Every key within this array is called the ``<finisherIdentifier>``.
.. _typo3.cms.form.prototypes.<prototypeidentifier>.finishersdefinition.<finisheridentifier>:
<finisherIdentifier>
--------------------
:aspect:`Option path`
TYPO3.CMS.Form.prototypes.<prototypeIdentifier>.finishersdefinition.<finisherIdentifier>
:aspect:`Data type`
string
:aspect:`Needed by`
Frontend/ Backend (form editor)
:aspect:`Mandatory`
Yes
.. :aspect:`Related options`
@ToDo
:aspect:`Default value (for prototype 'standard')`
.. code-block:: yaml
:linenos:
prototypes:
standard:
Closure:
[...]
Confirmation:
[...]
EmailToSender:
[...]
EmailToReceiver:
[...]
DeleteUploads:
[...]
FlashMessage:
[...]
Redirect:
[...]
SaveToDatabase:
[...]
:aspect:`Related options`
- :ref:`"TYPO3.CMS.Form.prototypes.\<prototypeIdentifier>.formElementsDefinition.\<formElementTypeIdentifier>.formEditor.propertyCollections.finishers.[*].identifier"<typo3.cms.form.prototypes.\<prototypeIdentifier>.formelementsdefinition.\<formelementtypeidentifier>.formeditor.propertycollections.finishers.*.identifier>`
- :ref:`"[FinishersEditor] selectOptions.[*].value"<typo3.cms.form.prototypes.\<prototypeidentifier>.formelementsdefinition.\<formelementtypeidentifier>.formeditor.editors.*.selectoptions.*.value-finisherseditor>`
:aspect:`Good to know`
- :ref:`"Custom finisher implementations"<concepts-finishers-customfinisherimplementations>`
:aspect:`Description`
This array key identifies a finisher. This identifier could be used to attach a finisher to a form.
.. _typo3.cms.form.prototypes.<prototypeidentifier>.finishersdefinition.<finisheridentifier>-commonproperties:
Common <finisherIdentifier> properties
=============================================
.. _typo3.cms.form.prototypes.<prototypeIdentifier>.finishersdefinition.<finisheridentifier>.implementationClassName:
implementationClassName
-----------------------
:aspect:`Option path`
TYPO3.CMS.Form.prototypes.<prototypeIdentifier>.finishersDefinition.<finisherIdentifier>.implementationClassName
:aspect:`Data type`
string
:aspect:`Needed by`
Frontend
:aspect:`Mandatory`
Yes
:aspect:`Default value`
Depends (see :ref:`concrete finishers configuration <typo3.cms.form.prototypes.\<prototypeidentifier>.finishersdefinition.\<finisheridentifier>-concreteconfigurations>`)
:aspect:`Good to know`
- :ref:`"Custom finisher implementations"<concepts-finishers-customfinisherimplementations>`
:aspect:`Description`
.. include:: properties/implementationClassName.rst
.. _typo3.cms.form.prototypes.<prototypeIdentifier>.finishersdefinition.<finisheridentifier>.options:
options
-------
:aspect:`Option path`
TYPO3.CMS.Form.prototypes.<prototypeIdentifier>.finishersDefinition.<finisherIdentifier>.options
:aspect:`Data type`
array
:aspect:`Needed by`
Frontend
:aspect:`Mandatory`
Depends (see :ref:`concrete finishers configuration <typo3.cms.form.prototypes.\<prototypeidentifier>.finishersdefinition.\<finisheridentifier>-concreteconfigurations>`)
:aspect:`Default value`
Depends (see :ref:`concrete finishers configuration <typo3.cms.form.prototypes.\<prototypeidentifier>.finishersdefinition.\<finisheridentifier>-concreteconfigurations>`)
:aspect:`Good to know`
- :ref:`"Custom finisher implementations"<concepts-finishers-customfinisherimplementations>`
:aspect:`Description`
Array with finisher options.
.. _typo3.cms.form.prototypes.<prototypeIdentifier>.finishersdefinition.<finisheridentifier>.translation.translationFile:
translation.translationFile
---------------------------
:aspect:`Option path`
TYPO3.CMS.Form.prototypes.<prototypeIdentifier>.finishersDefinition.<finisherIdentifier>.translation.translationFile
:aspect:`Data type`
string/ array
:aspect:`Needed by`
Frontend
:aspect:`Mandatory`
No
:aspect:`Default value`
Depends (see :ref:`concrete element configuration <typo3.cms.form.prototypes.\<prototypeidentifier>.formelementsdefinition.\<formelementtypeidentifier>-concreteconfigurations>`)
:aspect:`Good to know`
- :ref:`"Translate finisher options"<concepts-frontendrendering-translation-finishers>`
:aspect:`Description`
Filesystem path(s) to translation files which should be searched for finisher translations.
If the property is undefined, - :ref:`"TYPO3.CMS.Form.prototypes.\<prototypeIdentifier>.formElementsDefinition.Form.renderingOptions.translation.translationFile"<typo3.cms.form.prototypes.\<prototypeIdentifier>.formelementsdefinition.form.renderingoptions.translation.translationfile>` will be used.
.. _typo3.cms.form.prototypes.<prototypeIdentifier>.finishersdefinition.<finisheridentifier>.formeditor:
formEditor
----------
:aspect:`Option path`
TYPO3.CMS.Form.prototypes.<prototypeIdentifier>.finishersDefinition.<finisherIdentifier>.formEditor
:aspect:`Data type`
array
:aspect:`Needed by`
Backend (form editor)
:aspect:`Mandatory`
Recommended
:aspect:`Default value`
Depends (see :ref:`concrete finishers configuration <typo3.cms.form.prototypes.\<prototypeidentifier>.finishersdefinition.\<finisheridentifier>-concreteconfigurations>`)
.. :aspect:`Good to know`
ToDo
:aspect:`Description`
Array with configurations for the ``form editor``
.. _typo3.cms.form.prototypes.<prototypeIdentifier>.finishersdefinition.<finisheridentifier>.formeditor.iconidentifier:
formeditor.iconIdentifier
-------------------------
:aspect:`Option path`
TYPO3.CMS.Form.prototypes.<prototypeIdentifier>.finishersDefinition.<finisherIdentifier>.formEditor.iconIdentifier
:aspect:`Data type`
string
:aspect:`Needed by`
Backend (form editor)
:aspect:`Mandatory`
Yes
:aspect:`Default value`
Depends (see :ref:`concrete finishers configuration <typo3.cms.form.prototypes.\<prototypeidentifier>.finishersdefinition.\<finisheridentifier>-concreteconfigurations>`)
.. :aspect:`Good to know`
ToDo
:aspect:`Description`
.. include:: properties/iconIdentifier.rst
.. _typo3.cms.form.prototypes.<prototypeIdentifier>.finishersdefinition.<finisheridentifier>.formeditor.label:
formeditor.label
----------------
:aspect:`Option path`
TYPO3.CMS.Form.prototypes.<prototypeIdentifier>.finishersDefinition.<finisherIdentifier>.formEditor.label
:aspect:`Data type`
string
:aspect:`Needed by`
Backend (form editor)
:aspect:`Mandatory`
Yes
:aspect:`Default value`
Depends (see :ref:`concrete finishers configuration <typo3.cms.form.prototypes.\<prototypeidentifier>.finishersdefinition.\<finisheridentifier>-concreteconfigurations>`)
:aspect:`Good to know`
- :ref:`"Translate form editor settings"<concepts-formeditor-translation-formeditor>`
:aspect:`Description`
.. include:: properties/label.rst
.. _typo3.cms.form.prototypes.<prototypeIdentifier>.finishersdefinition.<finisheridentifier>.formeditor.predefineddefaults:
formeditor.predefinedDefaults
-----------------------------
:aspect:`Option path`
TYPO3.CMS.Form.prototypes.<prototypeIdentifier>.finishersDefinition.<finisherIdentifier>.formEditor.predefinedDefaults
:aspect:`Data type`
array
:aspect:`Needed by`
Backend (form editor)
:aspect:`Mandatory`
No
:aspect:`Default value`
Depends (see :ref:`concrete finishers configuration <typo3.cms.form.prototypes.\<prototypeidentifier>.finishersdefinition.\<finisheridentifier>-concreteconfigurations>`)
.. :aspect:`Good to know`
ToDo
:aspect:`Description`
.. include:: properties/predefinedDefaults.rst
.. _typo3.cms.form.prototypes.<prototypeIdentifier>.finishersdefinition.<finisheridentifier>.formengine:
FormEngine
----------
:aspect:`Option path`
TYPO3.CMS.Form.prototypes.<prototypeIdentifier>.finishersDefinition.<finisherIdentifier>.FormEngine
:aspect:`Data type`
array
:aspect:`Needed by`
Backend (plugin)
:aspect:`Mandatory`
No
:aspect:`Default value`
Depends (see :ref:`concrete finishers configuration <typo3.cms.form.prototypes.\<prototypeidentifier>.finishersdefinition.\<finisheridentifier>-concreteconfigurations>`)
.. :aspect:`Good to know`
ToDo
:aspect:`Description`
Array with configurations for the ``form plugin``
.. _typo3.cms.form.prototypes.<prototypeIdentifier>.finishersdefinition.<finisheridentifier>.FormEngine.label:
FormEngine.label
----------------
:aspect:`Option path`
TYPO3.CMS.Form.prototypes.<prototypeIdentifier>.finishersDefinition.<finisherIdentifier>.FormEngine.label
:aspect:`Data type`
string
:aspect:`Needed by`
Backend (plugin)
:aspect:`Mandatory`
No
:aspect:`Default value`
Depends (see :ref:`concrete finishers configuration <typo3.cms.form.prototypes.\<prototypeidentifier>.finishersdefinition.\<finisheridentifier>-concreteconfigurations>`)
:aspect:`Good to know`
- :ref:`"Translate form plugin settings"<concepts-formplugin-translation-formengine>`
:aspect:`Description`
.. include:: properties/formEngine/label.rst
.. _typo3.cms.form.prototypes.<prototypeIdentifier>.finishersdefinition.<finisheridentifier>.FormEngine.elements:
FormEngine.elements
-------------------
:aspect:`Option path`
TYPO3.CMS.Form.prototypes.<prototypeIdentifier>.finishersDefinition.<finisherIdentifier>.FormEngine.elements
:aspect:`Data type`
array
:aspect:`Needed by`
Backend (plugin)
:aspect:`Mandatory`
No
:aspect:`Default value`
Depends (see :ref:`concrete finishers configuration <typo3.cms.form.prototypes.\<prototypeidentifier>.finishersdefinition.\<finisheridentifier>-concreteconfigurations>`)
:aspect:`Good to know`
- :ref:`"Translate form plugin settings"<concepts-formplugin-translation-formengine>`
:aspect:`Description`
.. include:: properties/formEngine/elements.rst
.. _typo3.cms.form.prototypes.<prototypeidentifier>.finishersdefinition.<finisheridentifier>-concreteconfigurations:
Concrete configurations
=======================
.. toctree::
finishers/Closure
finishers/Confirmation
finishers/EmailToReceiver
finishers/EmailToSender
finishers/DeleteUploads
finishers/FlashMessage
finishers/Redirect
finishers/SaveToDatabase
@@ -0,0 +1,186 @@
.. include:: ../../../../Includes.txt
.. _typo3.cms.form.prototypes.<prototypeidentifier>.finishersdefinition.closure:
=========
[Closure]
=========
.. _typo3.cms.form.prototypes.<prototypeidentifier>.finishersdefinitionclosure-properties:
Properties
==========
.. _typo3.cms.form.prototypes.<prototypeIdentifier>.finishersdefinition.closure.implementationclassname:
implementationClassName
-----------------------
:aspect:`Option path`
TYPO3.CMS.Form.prototypes.<prototypeIdentifier>.finishersDefinition.Closure.implementationClassName
:aspect:`Data type`
string
:aspect:`Needed by`
Frontend
:aspect:`Mandatory`
Yes
:aspect:`Default value`
.. code-block:: yaml
:linenos:
:emphasize-lines: 2
Closure:
implementationClassName: TYPO3\CMS\Form\Domain\Finishers\ClosureFinisher
:aspect:`Good to know`
- :ref:`"Custom finisher implementations"<concepts-finishers-customfinisherimplementations>`
:aspect:`Description`
.. include:: ../properties/implementationClassName.rst
.. _typo3.cms.form.prototypes.<prototypeIdentifier>.finishersdefinition.closure.options.closure:
options.closure
---------------
:aspect:`Option path`
TYPO3.CMS.Form.prototypes.<prototypeIdentifier>.finishersDefinition.Closure.options.closure
:aspect:`Data type`
\Closure
:aspect:`Needed by`
Frontend
:aspect:`Mandatory`
Yes
:aspect:`Default value`
null
.. :aspect:`Good to know`
ToDo
- :ref:`"Closure finisher"<apireference-finisheroptions-closurefinisher>`
- :ref:`"Custom finisher implementations"<concepts-finishers-customfinisherimplementations>`
:aspect:`Description`
The closure which are invoked if the finisher is treggered.
.. _typo3.cms.form.prototypes.<prototypeIdentifier>.finishersdefinition.closure.formeditor.iconidentifier:
formeditor.iconIdentifier
-------------------------
:aspect:`Option path`
TYPO3.CMS.Form.prototypes.<prototypeIdentifier>.finishersDefinition.Closure.formEditor.iconIdentifier
:aspect:`Data type`
string
:aspect:`Needed by`
Backend (form editor)
:aspect:`Mandatory`
Yes
:aspect:`Default value`
.. code-block:: yaml
:linenos:
:emphasize-lines: 3
Closure:
formEditor:
iconIdentifier: t3-form-icon-finisher
label: formEditor.elements.Form.finisher.Closure.editor.header.label
predefinedDefaults:
options:
closure: ''
.. :aspect:`Good to know`
ToDo
:aspect:`Description`
.. include:: ../properties/iconIdentifier.rst
.. _typo3.cms.form.prototypes.<prototypeIdentifier>.finishersdefinition.closure.formeditor.label:
formeditor.label
----------------
:aspect:`Option path`
TYPO3.CMS.Form.prototypes.<prototypeIdentifier>.finishersDefinition.Closure.formEditor.label
:aspect:`Data type`
string
:aspect:`Needed by`
Backend (form editor)
:aspect:`Mandatory`
Yes
:aspect:`Default value`
.. code-block:: yaml
:linenos:
:emphasize-lines: 4
Closure:
formEditor:
iconIdentifier: t3-form-icon-finisher
label: formEditor.elements.Form.finisher.Closure.editor.header.label
predefinedDefaults:
options:
closure: ''
:aspect:`Good to know`
- :ref:`"Translate form editor settings"<concepts-formeditor-translation-formeditor>`
:aspect:`Description`
.. include:: ../properties/label.rst
.. _typo3.cms.form.prototypes.<prototypeIdentifier>.finishersdefinition.closure.formeditor.predefineddefaults:
formeditor.predefinedDefaults
-----------------------------
:aspect:`Option path`
TYPO3.CMS.Form.prototypes.<prototypeIdentifier>.finishersDefinition.Closure.formEditor.predefinedDefaults
:aspect:`Data type`
array
:aspect:`Needed by`
Backend (form editor)
:aspect:`Mandatory`
No
:aspect:`Default value`
.. code-block:: yaml
:linenos:
:emphasize-lines: 5-
Closure:
formEditor:
iconIdentifier: t3-form-icon-finisher
label: formEditor.elements.Form.finisher.Closure.editor.header.label
predefinedDefaults:
options:
closure: ''
.. :aspect:`Good to know`
ToDo
:aspect:`Description`
.. include:: ../properties/predefinedDefaults.rst
@@ -0,0 +1,344 @@
.. include:: ../../../../Includes.txt
.. _typo3.cms.form.prototypes.<prototypeidentifier>.finishersdefinition.confirmation:
==============
[Confirmation]
==============
.. _typo3.cms.form.prototypes.<prototypeidentifier>.finishersdefinitionconfirmation-properties:
Properties
==========
.. _typo3.cms.form.prototypes.<prototypeIdentifier>.finishersdefinition.confirmation.implementationclassname:
implementationClassName
-----------------------
:aspect:`Option path`
TYPO3.CMS.Form.prototypes.<prototypeIdentifier>.finishersDefinition.Confirmation.implementationClassName
:aspect:`Data type`
string
:aspect:`Needed by`
Frontend
:aspect:`Mandatory`
Yes
:aspect:`Default value`
.. code-block:: yaml
:linenos:
:emphasize-lines: 2
Confirmation:
implementationClassName: TYPO3\CMS\Form\Domain\Finishers\ConfirmationFinisher
:aspect:`Good to know`
- :ref:`"Custom finisher implementations"<concepts-finishers-customfinisherimplementations>`
:aspect:`Description`
.. include:: ../properties/implementationClassName.rst
.. _typo3.cms.form.prototypes.<prototypeIdentifier>.finishersdefinition.confirmation.options.message:
options.message
---------------
:aspect:`Option path`
TYPO3.CMS.Form.prototypes.<prototypeIdentifier>.finishersDefinition.Confirmation.options.message
:aspect:`Data type`
string
:aspect:`Needed by`
Frontend
:aspect:`Mandatory`
Yes
:aspect:`Default value`
The form has been submitted.
:aspect:`Good to know`
- :ref:`"Confirmation finisher"<apireference-finisheroptions-confirmationfinisher>`
- :ref:`"Accessing form runtime values"<concepts-finishers-customfinisherimplementations-accessingoptions-formruntimeaccessor>`
- :ref:`"Translate finisher options"<concepts-frontendrendering-translation-finishers>`
:aspect:`Description`
The text which is shown if the finisher is invoked.
.. _typo3.cms.form.prototypes.<prototypeIdentifier>.finishersdefinition.confirmation.options.contentelementuid:
options.contentElementUid
-------------------------
:aspect:`Option path`
TYPO3.CMS.Form.prototypes.<prototypeIdentifier>.finishersDefinition.Confirmation.options.contentElementUid
:aspect:`Data type`
integer
:aspect:`Needed by`
Frontend
:aspect:`Mandatory`
No
:aspect:`Default value`
undefined
:aspect:`Description`
The option "contentElementUid" can be used to render a content element.
If contentElementUid is set, the option "message" will be ignored.
.. _typo3.cms.form.prototypes.<prototypeIdentifier>.finishersdefinition.confirmation.options.typoscriptobjectpath:
options.typoscriptObjectPath
----------------------------
:aspect:`Option path`
TYPO3.CMS.Form.prototypes.<prototypeIdentifier>.finishersDefinition.Confirmation.options.typoscriptObjectPath
:aspect:`Data type`
string
:aspect:`Needed by`
Frontend
:aspect:`Mandatory`
No
:aspect:`Default value`
'lib.tx_form.contentElementRendering'
:aspect:`Description`
The option "typoscriptObjectPath" can be used to render the content element (options.contentElementUid) through a typoscript lib.
.. _typo3.cms.form.prototypes.<prototypeIdentifier>.finishersdefinition.confirmation.options.variables:
options.variables
-----------------
:aspect:`Option path`
TYPO3.CMS.Form.prototypes.<prototypeIdentifier>.finishersDefinition.Confirmation.options.variables
:aspect:`Data type`
array
:aspect:`Needed by`
Frontend
:aspect:`Mandatory`
No
:aspect:`Default value`
undefined
:aspect:`Description`
Variables which should be available within the template.
.. _typo3.cms.form.prototypes.<prototypeIdentifier>.finishersdefinition.confirmation.options.templatename:
options.templateName
--------------------
:aspect:`Option path`
TYPO3.CMS.Form.prototypes.<prototypeIdentifier>.finishersDefinition.Confirmation.options.templateName
:aspect:`Data type`
string
:aspect:`Needed by`
Frontend
:aspect:`Mandatory`
Yes
:aspect:`Default value`
'Confirmation'
:aspect:`Description`
Define a custom template name which should be used.
.. _typo3.cms.form.prototypes.<prototypeIdentifier>.finishersdefinition.confirmation.options.templaterootpaths:
options.templateRootPaths
-------------------------
:aspect:`Option path`
TYPO3.CMS.Form.prototypes.<prototypeIdentifier>.finishersDefinition.Confirmation.options.templateRootPaths
:aspect:`Data type`
array
:aspect:`Needed by`
Frontend
:aspect:`Mandatory`
Yes
:aspect:`Default value`
.. code-block:: yaml
:linenos:
Confirmation:
options:
templateRootPaths:
10: 'EXT:form/Resources/Private/Frontend/Templates/Finishers/Confirmation/'
:aspect:`Description`
Used to define several paths for templates, which will be tried in reversed order (the paths are searched from bottom to top).
.. _typo3.cms.form.prototypes.<prototypeIdentifier>.finishersdefinition.confirmation.options.translation.translationfile:
options.translation.translationFile
-----------------------------------
:aspect:`Option path`
TYPO3.CMS.Form.prototypes.<prototypeIdentifier>.finishersDefinition.Confirmation.options.translation.translationFile
:aspect:`Data type`
string/ array
:aspect:`Needed by`
Frontend
:aspect:`Mandatory`
No
:aspect:`Default value`
undefined
:aspect:`Good to know`
- :ref:`"Confirmation finisher"<apireference-finisheroptions-confirmationfinisher>`
- :ref:`"Accessing form runtime values"<concepts-finishers-customfinisherimplementations-accessingoptions-formruntimeaccessor>`
- :ref:`"Translate finisher options"<concepts-frontendrendering-translation-finishers>`
:aspect:`Description`
If set, this translation file(s) will be used for finisher option translations.
If not set, the translation file(s) from the 'Form' element will be used.
Read :ref:`Translate finisher options<concepts-frontendrendering-translation-finishers>` for more informations.
.. _typo3.cms.form.prototypes.<prototypeIdentifier>.finishersdefinition.confirmation.formeditor.iconidentifier:
formeditor.iconIdentifier
-------------------------
:aspect:`Option path`
TYPO3.CMS.Form.prototypes.<prototypeIdentifier>.finishersDefinition.Confirmation.formEditor.iconIdentifier
:aspect:`Data type`
string
:aspect:`Needed by`
Backend (form editor)
:aspect:`Mandatory`
Yes
:aspect:`Default value`
.. code-block:: yaml
:linenos:
:emphasize-lines: 3
Confirmation:
formEditor:
iconIdentifier: t3-form-icon-finisher
label: formEditor.elements.Form.finisher.Confirmation.editor.header.label
predefinedDefaults:
options:
message: ''
.. :aspect:`Good to know`
ToDo
:aspect:`Description`
.. include:: ../properties/iconIdentifier.rst
.. _typo3.cms.form.prototypes.<prototypeIdentifier>.finishersdefinition.confirmation.formeditor.label:
formeditor.label
----------------
:aspect:`Option path`
TYPO3.CMS.Form.prototypes.<prototypeIdentifier>.finishersDefinition.Confirmation.formEditor.label
:aspect:`Data type`
string
:aspect:`Needed by`
Backend (form editor)
:aspect:`Mandatory`
Yes
:aspect:`Default value`
.. code-block:: yaml
:linenos:
:emphasize-lines: 4
Confirmation:
formEditor:
iconIdentifier: t3-form-icon-finisher
label: formEditor.elements.Form.finisher.Confirmation.editor.header.label
predefinedDefaults:
options:
message: ''
:aspect:`Good to know`
- :ref:`"Translate form editor settings"<concepts-formeditor-translation-formeditor>`
:aspect:`Description`
.. include:: ../properties/label.rst
.. _typo3.cms.form.prototypes.<prototypeIdentifier>.finishersdefinition.confirmation.formeditor.predefineddefaults:
formeditor.predefinedDefaults
-----------------------------
:aspect:`Option path`
TYPO3.CMS.Form.prototypes.<prototypeIdentifier>.finishersDefinition.Confirmation.formEditor.predefinedDefaults
:aspect:`Data type`
array
:aspect:`Needed by`
Backend (form editor)
:aspect:`Mandatory`
No
:aspect:`Default value`
.. code-block:: yaml
:linenos:
:emphasize-lines: 5-
Confirmation:
formEditor:
iconIdentifier: t3-form-icon-finisher
label: formEditor.elements.Form.finisher.Confirmation.editor.header.label
predefinedDefaults:
options:
message: ''
.. :aspect:`Good to know`
ToDo
:aspect:`Description`
.. include:: ../properties/predefinedDefaults.rst
@@ -0,0 +1,114 @@
.. include:: ../../../../Includes.txt
.. _typo3.cms.form.prototypes.<prototypeidentifier>.finishersdefinition.deleteuploads:
===============
[DeleteUploads]
===============
.. _typo3.cms.form.prototypes.<prototypeidentifier>.finishersdefinitiondeleteuploads-properties:
Properties
==========
.. _typo3.cms.form.prototypes.<prototypeIdentifier>.finishersdefinition.deleteuploads.implementationclassname:
implementationClassName
-----------------------
:aspect:`Option path`
TYPO3.CMS.Form.prototypes.<prototypeIdentifier>.finishersDefinition.DeleteUploads.implementationClassName
:aspect:`Data type`
string
:aspect:`Needed by`
Frontend
:aspect:`Mandatory`
Yes
:aspect:`Default value`
.. code-block:: yaml
:linenos:
:emphasize-lines: 2
DeleteUploads:
implementationClassName: TYPO3\CMS\Form\Domain\Finishers\DeleteUploadsFinisher
:aspect:`Good to know`
- :ref:`"Custom finisher implementations"<concepts-finishers-customfinisherimplementations>`
:aspect:`Description`
Array which defines the available finishers. Every key within this array is called the ``<finisherIdentifier>``
.. _typo3.cms.form.prototypes.<prototypeIdentifier>.finishersdefinition.deleteuploads.formeditor.iconidentifier:
formeditor.iconIdentifier
-------------------------
:aspect:`Option path`
TYPO3.CMS.Form.prototypes.<prototypeIdentifier>.finishersDefinition.DeleteUploads.formEditor.iconIdentifier
:aspect:`Data type`
string
:aspect:`Needed by`
Backend (form editor)
:aspect:`Mandatory`
Yes
:aspect:`Default value`
.. code-block:: yaml
:linenos:
:emphasize-lines: 3
DeleteUploads:
formEditor:
iconIdentifier: t3-form-icon-finisher
label: formEditor.elements.Form.finisher.DeleteUploads.editor.header.label
.. :aspect:`Good to know`
ToDo
:aspect:`Description`
.. include:: ../properties/iconIdentifier.rst
.. _typo3.cms.form.prototypes.<prototypeIdentifier>.finishersdefinition.deleteuploads.formeditor.label:
formeditor.label
----------------
:aspect:`Option path`
TYPO3.CMS.Form.prototypes.<prototypeIdentifier>.finishersDefinition.DeleteUploads.formEditor.label
:aspect:`Data type`
string
:aspect:`Needed by`
Backend (form editor)
:aspect:`Mandatory`
Yes
:aspect:`Default value`
.. code-block:: yaml
:linenos:
:emphasize-lines: 4
DeleteUploads:
formEditor:
iconIdentifier: t3-form-icon-finisher
label: formEditor.elements.Form.finisher.DeleteUploads.editor.header.label
:aspect:`Good to know`
- :ref:`"Translate form editor settings"<concepts-formeditor-translation-formeditor>`
:aspect:`Description`
.. include:: ../properties/label.rst
@@ -0,0 +1,791 @@
.. include:: ../../../../Includes.txt
.. _typo3.cms.form.prototypes.<prototypeidentifier>.finishersdefinition.emailtoreceiver:
=================
[EmailToReceiver]
=================
.. _typo3.cms.form.prototypes.<prototypeidentifier>.finishersdefinitionemailtoreceiver-properties:
Properties
==========
.. _typo3.cms.form.prototypes.<prototypeIdentifier>.finishersdefinition.emailtoreceiver.implementationclassname:
implementationClassName
-----------------------
:aspect:`Option path`
TYPO3.CMS.Form.prototypes.<prototypeIdentifier>.finishersDefinition.EmailToReceiver.implementationClassName
:aspect:`Data type`
string
:aspect:`Needed by`
Frontend
:aspect:`Mandatory`
Yes
:aspect:`Default value`
.. code-block:: yaml
:linenos:
:emphasize-lines: 2
EmailToReceiver:
implementationClassName: TYPO3\CMS\Form\Domain\Finishers\EmailFinisher
:aspect:`Good to know`
- :ref:`"Custom finisher implementations"<concepts-finishers-customfinisherimplementations>`
:aspect:`Description`
.. include:: ../properties/implementationClassName.rst
.. _typo3.cms.form.prototypes.<prototypeIdentifier>.finishersdefinition.emailtoreceiver.options.subject:
options.subject
---------------
:aspect:`Option path`
TYPO3.CMS.Form.prototypes.<prototypeIdentifier>.finishersDefinition.EmailToReceiver.options.subject
:aspect:`Data type`
string
:aspect:`Needed by`
Frontend
:aspect:`Mandatory`
Yes
:aspect:`Default value`
undefined
:aspect:`Good to know`
- :ref:`"Email finisher"<apireference-finisheroptions-emailfinisher>`
- :ref:`"Accessing form runtime values"<concepts-finishers-customfinisherimplementations-accessingoptions-formruntimeaccessor>`
- :ref:`"Translate finisher options"<concepts-frontendrendering-translation-finishers>`
:aspect:`Description`
Subject of the email.
.. _typo3.cms.form.prototypes.<prototypeIdentifier>.finishersdefinition.emailtoreceiver.options.recipientaddress:
options.recipientAddress
------------------------
:aspect:`Option path`
TYPO3.CMS.Form.prototypes.<prototypeIdentifier>.finishersDefinition.EmailToReceiver.options.recipientAddress
:aspect:`Data type`
string
:aspect:`Needed by`
Frontend
:aspect:`Mandatory`
Yes
:aspect:`Default value`
undefined
:aspect:`Good to know`
- :ref:`"Email finisher"<apireference-finisheroptions-emailfinisher>`
- :ref:`"Accessing form runtime values"<concepts-finishers-customfinisherimplementations-accessingoptions-formruntimeaccessor>`
:aspect:`Description`
Email address of the recipient (To).
.. _typo3.cms.form.prototypes.<prototypeIdentifier>.finishersdefinition.emailtoreceiver.options.recipientname:
options.recipientName
---------------------
:aspect:`Option path`
TYPO3.CMS.Form.prototypes.<prototypeIdentifier>.finishersDefinition.EmailToReceiver.options.recipientName
:aspect:`Data type`
string
:aspect:`Needed by`
Frontend
:aspect:`Mandatory`
No
:aspect:`Default value`
empty string
:aspect:`Good to know`
- :ref:`"Email finisher"<apireference-finisheroptions-emailfinisher>`
- :ref:`"Accessing form runtime values"<concepts-finishers-customfinisherimplementations-accessingoptions-formruntimeaccessor>`
:aspect:`Description`
Human-readable name of the recipient.
.. _typo3.cms.form.prototypes.<prototypeIdentifier>.finishersdefinition.emailtoreceiver.options.senderaddress:
options.senderAddress
---------------------
:aspect:`Option path`
TYPO3.CMS.Form.prototypes.<prototypeIdentifier>.finishersDefinition.EmailToReceiver.options.senderAddress
:aspect:`Data type`
string
:aspect:`Needed by`
Frontend
:aspect:`Mandatory`
Yes
:aspect:`Default value`
undefined
:aspect:`Good to know`
- :ref:`"Email finisher"<apireference-finisheroptions-emailfinisher>`
- :ref:`"Accessing form runtime values"<concepts-finishers-customfinisherimplementations-accessingoptions-formruntimeaccessor>`
:aspect:`Description`
Email address of the sender/ visitor (From).
.. _typo3.cms.form.prototypes.<prototypeIdentifier>.finishersdefinition.emailtoreceiver.options.sendername:
options.senderName
------------------
:aspect:`Option path`
TYPO3.CMS.Form.prototypes.<prototypeIdentifier>.finishersDefinition.EmailToReceiver.options.senderName
:aspect:`Data type`
string
:aspect:`Needed by`
Frontend
:aspect:`Mandatory`
No
:aspect:`Default value`
empty string
:aspect:`Good to know`
- :ref:`"Email finisher"<apireference-finisheroptions-emailfinisher>`
- :ref:`"Accessing form runtime values"<concepts-finishers-customfinisherimplementations-accessingoptions-formruntimeaccessor>`
:aspect:`Description`
Human-readable name of the sender.
.. _typo3.cms.form.prototypes.<prototypeIdentifier>.finishersdefinition.emailtoreceiver.options.replytoaddress:
options.replyToAddress
----------------------
:aspect:`Option path`
TYPO3.CMS.Form.prototypes.<prototypeIdentifier>.finishersDefinition.EmailToReceiver.options.replyToAddress
:aspect:`Data type`
string/ array
:aspect:`Needed by`
Frontend
:aspect:`Mandatory`
No
:aspect:`Default value`
undefined
:aspect:`Good to know`
- :ref:`"Email finisher"<apireference-finisheroptions-emailfinisher>`
- :ref:`"Accessing form runtime values"<concepts-finishers-customfinisherimplementations-accessingoptions-formruntimeaccessor>`
:aspect:`Description`
Email address of to be used as reply-to email (use multiple addresses with an array).
.. note::
For the moment, the ``form editor`` cannot deal with multiple reply-to addresses (use multiple addresses with an array)
.. _typo3.cms.form.prototypes.<prototypeIdentifier>.finishersdefinition.emailtoreceiver.options.carboncopyaddress:
options.carbonCopyAddress
-------------------------
:aspect:`Option path`
TYPO3.CMS.Form.prototypes.<prototypeIdentifier>.finishersDefinition.EmailToReceiver.options.carbonCopyAddress
:aspect:`Data type`
string/ array
:aspect:`Needed by`
Frontend
:aspect:`Mandatory`
No
:aspect:`Default value`
undefined
:aspect:`Good to know`
- :ref:`"Email finisher"<apireference-finisheroptions-emailfinisher>`
- :ref:`"Accessing form runtime values"<concepts-finishers-customfinisherimplementations-accessingoptions-formruntimeaccessor>`
:aspect:`Description`
Email address of the copy recipient (use multiple addresses with an array)
.. note::
For the moment, the ``form editor`` cannot deal with multiple copy recipient addresses (use multiple addresses with an array)
.. _typo3.cms.form.prototypes.<prototypeIdentifier>.finishersdefinition.emailtoreceiver.options.blindcarboncopyaddress:
options.blindCarbonCopyAddress
------------------------------
:aspect:`Option path`
TYPO3.CMS.Form.prototypes.<prototypeIdentifier>.finishersDefinition.EmailToReceiver.options.blindCarbonCopyAddress
:aspect:`Data type`
string
:aspect:`Needed by`
Frontend
:aspect:`Mandatory`
No
:aspect:`Default value`
undefined
:aspect:`Good to know`
- :ref:`"Email finisher"<apireference-finisheroptions-emailfinisher>`
- :ref:`"Accessing form runtime values"<concepts-finishers-customfinisherimplementations-accessingoptions-formruntimeaccessor>`
:aspect:`Description`
Email address of the blind copy recipient (use multiple addresses with an array)
.. note::
For the moment, the ``form editor`` cannot deal with multiple blind copy recipient addresses (use multiple addresses with an array)
.. _typo3.cms.form.prototypes.<prototypeIdentifier>.finishersdefinition.emailtoreceiver.options.format:
options.format
--------------
:aspect:`Option path`
TYPO3.CMS.Form.prototypes.<prototypeIdentifier>.finishersDefinition.EmailToReceiver.options.format
:aspect:`Data type`
string
:aspect:`Needed by`
Frontend
:aspect:`Mandatory`
No
:aspect:`Default value`
html
:aspect:`Possible values`
html/ plaintext
:aspect:`Good to know`
- :ref:`"Email finisher"<apireference-finisheroptions-emailfinisher>`
- :ref:`"Accessing form runtime values"<concepts-finishers-customfinisherimplementations-accessingoptions-formruntimeaccessor>`
:aspect:`Description`
The format of the email. By default mails are sent as HTML.
.. _typo3.cms.form.prototypes.<prototypeIdentifier>.finishersdefinition.emailtoreceiver.options.attachuploads:
options.attachUploads
---------------------
:aspect:`Option path`
TYPO3.CMS.Form.prototypes.<prototypeIdentifier>.finishersDefinition.EmailToReceiver.options.attachUploads
:aspect:`Data type`
bool
:aspect:`Needed by`
Frontend
:aspect:`Mandatory`
No
:aspect:`Default value`
true
:aspect:`Good to know`
- :ref:`"Email finisher"<apireference-finisheroptions-emailfinisher>`
- :ref:`"Accessing form runtime values"<concepts-finishers-customfinisherimplementations-accessingoptions-formruntimeaccessor>`
:aspect:`Description`
If set, all uploaded items are attached to the email.
.. _typo3.cms.form.prototypes.<prototypeIdentifier>.finishersdefinition.emailtoreceiver.options.translation.language:
options.translation.language
----------------------------
:aspect:`Option path`
TYPO3.CMS.Form.prototypes.<prototypeIdentifier>.finishersDefinition.EmailToReceiver.options.translation.language
:aspect:`Data type`
string
:aspect:`Needed by`
Frontend
:aspect:`Mandatory`
No
:aspect:`Default value`
undefined
:aspect:`Good to know`
- :ref:`"Email finisher"<apireference-finisheroptions-emailfinisher>`
- :ref:`"Accessing form runtime values"<concepts-finishers-customfinisherimplementations-accessingoptions-formruntimeaccessor>`
- :ref:`"Translate finisher options"<concepts-frontendrendering-translation-finishers>`
:aspect:`Description`
If not set, the finisher options are translated depending on the current frontend language (if translations exists).
This option allows you to force translations for a given sys_language isocode, e.g 'dk' or 'de'.
Read :ref:`Translate finisher options<concepts-frontendrendering-translation-finishers>` for more informations.
.. _typo3.cms.form.prototypes.<prototypeIdentifier>.finishersdefinition.emailtoreceiver.options.translation.translationfile:
options.translation.translationFile
-----------------------------------
:aspect:`Option path`
TYPO3.CMS.Form.prototypes.<prototypeIdentifier>.finishersDefinition.EmailToReceiver.options.translation.translationFile
:aspect:`Data type`
string/ array
:aspect:`Needed by`
Frontend
:aspect:`Mandatory`
No
:aspect:`Default value`
undefined
:aspect:`Good to know`
- :ref:`"Email finisher"<apireference-finisheroptions-emailfinisher>`
- :ref:`"Accessing form runtime values"<concepts-finishers-customfinisherimplementations-accessingoptions-formruntimeaccessor>`
- :ref:`"Translate finisher options"<concepts-frontendrendering-translation-finishers>`
:aspect:`Description`
If set, this translation file(s) will be used for finisher option translations.
If not set, the translation file(s) from the 'Form' element will be used.
Read :ref:`Translate finisher options<concepts-frontendrendering-translation-finishers>` for more informations.
.. _typo3.cms.form.prototypes.<prototypeIdentifier>.finishersdefinition.emailtoreceiver.options.templatepathandfilename:
options.templatePathAndFilename
-------------------------------
:aspect:`Option path`
TYPO3.CMS.Form.prototypes.<prototypeIdentifier>.finishersDefinition.EmailToReceiver.options.templatePathAndFilename
:aspect:`Data type`
string
:aspect:`Needed by`
Frontend
:aspect:`Mandatory`
Yes
:aspect:`Default value`
.. code-block:: yaml
:linenos:
:emphasize-lines: 2
EmailToReceiver:
options:
templatePathAndFilename: 'EXT:form/Resources/Private/Frontend/Templates/Finishers/Email/{@format}.html'
:aspect:`Good to know`
- :ref:`"Email finisher"<apireference-finisheroptions-emailfinisher>`
:aspect:`Description`
Template path and filename for the mail body.
The placeholder {\@format} will be replaced with the value from option ``format``.
.. _typo3.cms.form.prototypes.<prototypeIdentifier>.finishersdefinition.emailtoreceiver.options.partialrootpaths:
options.partialRootPaths
------------------------
:aspect:`Option path`
TYPO3.CMS.Form.prototypes.<prototypeIdentifier>.finishersDefinition.EmailToReceiver.options.partialRootPaths
:aspect:`Data type`
array
:aspect:`Needed by`
Frontend
:aspect:`Mandatory`
No
:aspect:`Default value`
undefined
:aspect:`Good to know`
- :ref:`"Email finisher"<apireference-finisheroptions-emailfinisher>`
:aspect:`Description`
Fluid layout paths.
.. _typo3.cms.form.prototypes.<prototypeIdentifier>.finishersdefinition.emailtoreceiver.options.layoutrootpaths:
options.layoutRootPaths
-----------------------
:aspect:`Option path`
TYPO3.CMS.Form.prototypes.<prototypeIdentifier>.finishersDefinition.EmailToReceiver.options.layoutRootPaths
:aspect:`Data type`
array
:aspect:`Needed by`
Frontend
:aspect:`Mandatory`
No
:aspect:`Default value`
undefined
:aspect:`Good to know`
- :ref:`"Email finisher"<apireference-finisheroptions-emailfinisher>`
:aspect:`Description`
Fluid partial paths.
.. _typo3.cms.form.prototypes.<prototypeIdentifier>.finishersdefinition.emailtoreceiver.options.variables:
options.variables
-----------------
:aspect:`Option path`
TYPO3.CMS.Form.prototypes.<prototypeIdentifier>.finishersDefinition.EmailToReceiver.options.variables
:aspect:`Data type`
array
:aspect:`Needed by`
Frontend
:aspect:`Mandatory`
No
:aspect:`Default value`
undefined
:aspect:`Good to know`
- :ref:`"Email finisher"<apireference-finisheroptions-emailfinisher>`
:aspect:`Description`
Associative array of variables which are available inside the Fluid template.
.. _typo3.cms.form.prototypes.<prototypeIdentifier>.finishersdefinition.emailtoreceiver.formeditor.iconidentifier:
formeditor.iconIdentifier
-------------------------
:aspect:`Option path`
TYPO3.CMS.Form.prototypes.<prototypeIdentifier>.finishersDefinition.EmailToReceiver.formEditor.iconIdentifier
:aspect:`Data type`
string
:aspect:`Needed by`
Backend (form editor)
:aspect:`Mandatory`
Yes
:aspect:`Default value`
.. code-block:: yaml
:linenos:
:emphasize-lines: 3
EmailToReceiver:
formEditor:
iconIdentifier: t3-form-icon-finisher
label: formEditor.elements.Form.finisher.EmailToReceiver.editor.header.label
predefinedDefaults:
options:
subject: ''
recipientAddress: ''
recipientName: ''
senderAddress: ''
senderName: ''
replyToAddress: ''
carbonCopyAddress: ''
blindCarbonCopyAddress: ''
format: html
attachUploads: true
translation:
language: ''
.. :aspect:`Good to know`
ToDo
:aspect:`Description`
.. include:: ../properties/iconIdentifier.rst
.. _typo3.cms.form.prototypes.<prototypeIdentifier>.finishersdefinition.emailtoreceiver.formeditor.label:
formeditor.label
----------------
:aspect:`Option path`
TYPO3.CMS.Form.prototypes.<prototypeIdentifier>.finishersDefinition.EmailToReceiver.formEditor.label
:aspect:`Data type`
string
:aspect:`Needed by`
Backend (form editor)
:aspect:`Mandatory`
Yes
:aspect:`Default value`
.. code-block:: yaml
:linenos:
:emphasize-lines: 4
EmailToReceiver:
formEditor:
iconIdentifier: t3-form-icon-finisher
label: formEditor.elements.Form.finisher.EmailToReceiver.editor.header.label
predefinedDefaults:
options:
subject: ''
recipientAddress: ''
recipientName: ''
senderAddress: ''
senderName: ''
replyToAddress: ''
carbonCopyAddress: ''
blindCarbonCopyAddress: ''
format: html
attachUploads: true
translation:
language: ''
:aspect:`Good to know`
- :ref:`"Translate form editor settings"<concepts-formeditor-translation-formeditor>`
:aspect:`Description`
.. include:: ../properties/label.rst
.. _typo3.cms.form.prototypes.<prototypeIdentifier>.finishersdefinition.emailtoreceiver.formeditor.predefineddefaults:
formeditor.predefinedDefaults
-----------------------------
:aspect:`Option path`
TYPO3.CMS.Form.prototypes.<prototypeIdentifier>.finishersDefinition.EmailToReceiver.formEditor.predefinedDefaults
:aspect:`Data type`
array
:aspect:`Needed by`
Backend (form editor)
:aspect:`Mandatory`
No
:aspect:`Default value`
.. code-block:: yaml
:linenos:
:emphasize-lines: 5-
EmailToReceiver:
formEditor:
iconIdentifier: t3-form-icon-finisher
label: formEditor.elements.Form.finisher.EmailToReceiver.editor.header.label
predefinedDefaults:
options:
subject: ''
recipientAddress: ''
recipientName: ''
senderAddress: ''
senderName: ''
replyToAddress: ''
carbonCopyAddress: ''
blindCarbonCopyAddress: ''
format: html
attachUploads: true
translation:
language: ''
.. :aspect:`Good to know`
ToDo
:aspect:`Description`
.. include:: ../properties/predefinedDefaults.rst
.. _typo3.cms.form.prototypes.<prototypeIdentifier>.finishersdefinition.emailtoreceiver.formengine.label:
FormEngine.label
----------------
:aspect:`Option path`
TYPO3.CMS.Form.prototypes.<prototypeIdentifier>.finishersDefinition.EmailToReceiver.FormEngine.label
:aspect:`Data type`
array
:aspect:`Needed by`
Backend (plugin)
:aspect:`Mandatory`
Yes
:aspect:`Default value`
.. code-block:: yaml
:linenos:
:emphasize-lines: 3
EmailToReceiver:
FormEngine:
label: tt_content.finishersDefinition.EmailToReceiver.label
:aspect:`Good to know`
- :ref:`"Translate form plugin settings"<concepts-formplugin-translation-formengine>`
:aspect:`Description`
.. include:: ../properties/formEngine/label.rst
.. _typo3.cms.form.prototypes.<prototypeIdentifier>.finishersdefinition.emailtoreceiver.formengine.elements:
FormEngine.elements
-------------------
:aspect:`Option path`
TYPO3.CMS.Form.prototypes.<prototypeIdentifier>.finishersDefinition.EmailToReceiver.FormEngine.elements
:aspect:`Data type`
array
:aspect:`Needed by`
Backend (plugin)
:aspect:`Mandatory`
Yes
:aspect:`Default value`
.. code-block:: yaml
:linenos:
:emphasize-lines: 4-
EmailToReceiver:
FormEngine:
label: tt_content.finishersDefinition.EmailToReceiver.label
elements:
subject:
label: tt_content.finishersDefinition.EmailToReceiver.subject.label
config:
type: input
recipientAddress:
label: tt_content.finishersDefinition.EmailToReceiver.recipientAddress.label
config:
type: input
eval: required
recipientName:
label: tt_content.finishersDefinition.EmailToReceiver.recipientName.label
config:
type: input
senderAddress:
label: tt_content.finishersDefinition.EmailToReceiver.senderAddress.label
config:
type: input
eval: required
senderName:
label: tt_content.finishersDefinition.EmailToReceiver.senderName.label
config:
type: input
replyToAddress:
label: tt_content.finishersDefinition.EmailToReceiver.replyToAddress.label
config:
type: input
carbonCopyAddress:
label: tt_content.finishersDefinition.EmailToReceiver.carbonCopyAddress.label
config:
type: input
blindCarbonCopyAddress:
label: tt_content.finishersDefinition.EmailToReceiver.blindCarbonCopyAddress.label
config:
type: input
format:
label: tt_content.finishersDefinition.EmailToReceiver.format.label
config:
type: select
renderType: selectSingle
minitems: 1
maxitems: 1
size: 1
items:
10:
- tt_content.finishersDefinition.EmailToSender.format.1
- html
20:
- tt_content.finishersDefinition.EmailToSender.format.2
- plaintext
translation:
language:
label: tt_content.finishersDefinition.EmailToReceiver.language.label
config:
type: select
renderType: selectSingle
minitems: 1
maxitems: 1
size: 1
items:
10:
- tt_content.finishersDefinition.EmailToReceiver.language.1
- default
:aspect:`Good to know`
- :ref:`"Translate form plugin settings"<concepts-formplugin-translation-formengine>`
:aspect:`Description`
.. include:: ../properties/formEngine/elements.rst
@@ -0,0 +1,791 @@
.. include:: ../../../../Includes.txt
.. _typo3.cms.form.prototypes.<prototypeidentifier>.finishersdefinition.emailtosender:
=================
[EmailToSender]
=================
.. _typo3.cms.form.prototypes.<prototypeidentifier>.finishersdefinitionemailtosender-properties:
Properties
==========
.. _typo3.cms.form.prototypes.<prototypeIdentifier>.finishersdefinition.emailtosender.implementationclassname:
implementationClassName
-----------------------
:aspect:`Option path`
TYPO3.CMS.Form.prototypes.<prototypeIdentifier>.finishersDefinition.EmailToSender.implementationClassName
:aspect:`Data type`
string
:aspect:`Needed by`
Frontend
:aspect:`Mandatory`
Yes
:aspect:`Default value`
.. code-block:: yaml
:linenos:
:emphasize-lines: 2
EmailToSender:
implementationClassName: TYPO3\CMS\Form\Domain\Finishers\EmailFinisher
:aspect:`Good to know`
- :ref:`"Custom finisher implementations"<concepts-finishers-customfinisherimplementations>`
:aspect:`Description`
.. include:: ../properties/implementationClassName.rst
.. _typo3.cms.form.prototypes.<prototypeIdentifier>.finishersdefinition.emailtosender.options.subject:
options.subject
---------------
:aspect:`Option path`
TYPO3.CMS.Form.prototypes.<prototypeIdentifier>.finishersDefinition.EmailToSender.options.subject
:aspect:`Data type`
string
:aspect:`Needed by`
Frontend
:aspect:`Mandatory`
Yes
:aspect:`Default value`
undefined
:aspect:`Good to know`
- :ref:`"Email finisher"<apireference-finisheroptions-emailfinisher>`
- :ref:`"Accessing form runtime values"<concepts-finishers-customfinisherimplementations-accessingoptions-formruntimeaccessor>`
- :ref:`"Translate finisher options"<concepts-frontendrendering-translation-finishers>`
:aspect:`Description`
Subject of the email.
.. _typo3.cms.form.prototypes.<prototypeIdentifier>.finishersdefinition.emailtosender.options.recipientaddress:
options.recipientAddress
------------------------
:aspect:`Option path`
TYPO3.CMS.Form.prototypes.<prototypeIdentifier>.finishersDefinition.EmailToSender.options.recipientAddress
:aspect:`Data type`
string
:aspect:`Needed by`
Frontend
:aspect:`Mandatory`
Yes
:aspect:`Default value`
undefined
:aspect:`Good to know`
- :ref:`"Email finisher"<apireference-finisheroptions-emailfinisher>`
- :ref:`"Accessing form runtime values"<concepts-finishers-customfinisherimplementations-accessingoptions-formruntimeaccessor>`
:aspect:`Description`
Email address of the recipient (To).
.. _typo3.cms.form.prototypes.<prototypeIdentifier>.finishersdefinition.emailtosender.options.recipientname:
options.recipientName
---------------------
:aspect:`Option path`
TYPO3.CMS.Form.prototypes.<prototypeIdentifier>.finishersDefinition.EmailToSender.options.recipientName
:aspect:`Data type`
string
:aspect:`Needed by`
Frontend
:aspect:`Mandatory`
No
:aspect:`Default value`
empty string
:aspect:`Good to know`
- :ref:`"Email finisher"<apireference-finisheroptions-emailfinisher>`
- :ref:`"Accessing form runtime values"<concepts-finishers-customfinisherimplementations-accessingoptions-formruntimeaccessor>`
:aspect:`Description`
Human-readable name of the recipient.
.. _typo3.cms.form.prototypes.<prototypeIdentifier>.finishersdefinition.emailtosender.options.senderaddress:
options.senderAddress
---------------------
:aspect:`Option path`
TYPO3.CMS.Form.prototypes.<prototypeIdentifier>.finishersDefinition.EmailToSender.options.senderAddress
:aspect:`Data type`
string
:aspect:`Needed by`
Frontend
:aspect:`Mandatory`
Yes
:aspect:`Default value`
undefined
:aspect:`Good to know`
- :ref:`"Email finisher"<apireference-finisheroptions-emailfinisher>`
- :ref:`"Accessing form runtime values"<concepts-finishers-customfinisherimplementations-accessingoptions-formruntimeaccessor>`
:aspect:`Description`
Email address of the sender/ visitor (From).
.. _typo3.cms.form.prototypes.<prototypeIdentifier>.finishersdefinition.emailtosender.options.sendername:
options.senderName
------------------
:aspect:`Option path`
TYPO3.CMS.Form.prototypes.<prototypeIdentifier>.finishersDefinition.EmailToSender.options.senderName
:aspect:`Data type`
string
:aspect:`Needed by`
Frontend
:aspect:`Mandatory`
No
:aspect:`Default value`
empty string
:aspect:`Good to know`
- :ref:`"Email finisher"<apireference-finisheroptions-emailfinisher>`
- :ref:`"Accessing form runtime values"<concepts-finishers-customfinisherimplementations-accessingoptions-formruntimeaccessor>`
:aspect:`Description`
Human-readable name of the sender.
.. _typo3.cms.form.prototypes.<prototypeIdentifier>.finishersdefinition.emailtosender.options.replytoaddress:
options.replyToAddress
----------------------
:aspect:`Option path`
TYPO3.CMS.Form.prototypes.<prototypeIdentifier>.finishersDefinition.EmailToSender.options.replyToAddress
:aspect:`Data type`
string/ array
:aspect:`Needed by`
Frontend
:aspect:`Mandatory`
No
:aspect:`Default value`
undefined
:aspect:`Good to know`
- :ref:`"Email finisher"<apireference-finisheroptions-emailfinisher>`
- :ref:`"Accessing form runtime values"<concepts-finishers-customfinisherimplementations-accessingoptions-formruntimeaccessor>`
:aspect:`Description`
Email address of to be used as reply-to email (use multiple addresses with an array).
.. note::
For the moment, the ``form editor`` cannot deal with multiple reply-to addresses (use multiple addresses with an array)
.. _typo3.cms.form.prototypes.<prototypeIdentifier>.finishersdefinition.emailtosender.options.carboncopyaddress:
options.carbonCopyAddress
-------------------------
:aspect:`Option path`
TYPO3.CMS.Form.prototypes.<prototypeIdentifier>.finishersDefinition.EmailToSender.options.carbonCopyAddress
:aspect:`Data type`
string/ array
:aspect:`Needed by`
Frontend
:aspect:`Mandatory`
No
:aspect:`Default value`
undefined
:aspect:`Good to know`
- :ref:`"Email finisher"<apireference-finisheroptions-emailfinisher>`
- :ref:`"Accessing form runtime values"<concepts-finishers-customfinisherimplementations-accessingoptions-formruntimeaccessor>`
:aspect:`Description`
Email address of the copy recipient (use multiple addresses with an array)
.. note::
For the moment, the ``form editor`` cannot deal with multiple copy recipient addresses (use multiple addresses with an array)
.. _typo3.cms.form.prototypes.<prototypeIdentifier>.finishersdefinition.emailtosender.options.blindcarboncopyaddress:
options.blindCarbonCopyAddress
------------------------------
:aspect:`Option path`
TYPO3.CMS.Form.prototypes.<prototypeIdentifier>.finishersDefinition.EmailToSender.options.blindCarbonCopyAddress
:aspect:`Data type`
string
:aspect:`Needed by`
Frontend
:aspect:`Mandatory`
No
:aspect:`Default value`
undefined
:aspect:`Good to know`
- :ref:`"Email finisher"<apireference-finisheroptions-emailfinisher>`
- :ref:`"Accessing form runtime values"<concepts-finishers-customfinisherimplementations-accessingoptions-formruntimeaccessor>`
:aspect:`Description`
Email address of the blind copy recipient (use multiple addresses with an array)
.. note::
For the moment, the ``form editor`` cannot deal with multiple blind copy recipient addresses (use multiple addresses with an array)
.. _typo3.cms.form.prototypes.<prototypeIdentifier>.finishersdefinition.emailtosender.options.format:
options.format
--------------
:aspect:`Option path`
TYPO3.CMS.Form.prototypes.<prototypeIdentifier>.finishersDefinition.EmailToSender.options.format
:aspect:`Data type`
string
:aspect:`Needed by`
Frontend
:aspect:`Mandatory`
No
:aspect:`Default value`
html
:aspect:`Possible values`
html/ plaintext
:aspect:`Good to know`
- :ref:`"Email finisher"<apireference-finisheroptions-emailfinisher>`
- :ref:`"Accessing form runtime values"<concepts-finishers-customfinisherimplementations-accessingoptions-formruntimeaccessor>`
:aspect:`Description`
The format of the email. By default mails are sent as HTML.
.. _typo3.cms.form.prototypes.<prototypeIdentifier>.finishersdefinition.emailtosender.options.attachuploads:
options.attachUploads
---------------------
:aspect:`Option path`
TYPO3.CMS.Form.prototypes.<prototypeIdentifier>.finishersDefinition.EmailToSender.options.attachUploads
:aspect:`Data type`
bool
:aspect:`Needed by`
Frontend
:aspect:`Mandatory`
No
:aspect:`Default value`
true
:aspect:`Good to know`
- :ref:`"Email finisher"<apireference-finisheroptions-emailfinisher>`
- :ref:`"Accessing form runtime values"<concepts-finishers-customfinisherimplementations-accessingoptions-formruntimeaccessor>`
:aspect:`Description`
If set, all uploaded items are attached to the email.
.. _typo3.cms.form.prototypes.<prototypeIdentifier>.finishersdefinition.emailtosender.options.translation.language:
options.translation.language
----------------------------
:aspect:`Option path`
TYPO3.CMS.Form.prototypes.<prototypeIdentifier>.finishersDefinition.EmailToSender.options.translation.language
:aspect:`Data type`
string
:aspect:`Needed by`
Frontend
:aspect:`Mandatory`
No
:aspect:`Default value`
undefined
:aspect:`Good to know`
- :ref:`"Email finisher"<apireference-finisheroptions-emailfinisher>`
- :ref:`"Accessing form runtime values"<concepts-finishers-customfinisherimplementations-accessingoptions-formruntimeaccessor>`
- :ref:`"Translate finisher options"<concepts-frontendrendering-translation-finishers>`
:aspect:`Description`
If not set, the finisher options are translated depending on the current frontend language (if translations exists).
This option allows you to force translations for a given sys_language isocode, e.g 'dk' or 'de'.
Read :ref:`Translate finisher options<concepts-frontendrendering-translation-finishers>` for more informations.
.. _typo3.cms.form.prototypes.<prototypeIdentifier>.finishersdefinition.emailtosender.options.translation.translationfile:
options.translation.translationFile
-----------------------------------
:aspect:`Option path`
TYPO3.CMS.Form.prototypes.<prototypeIdentifier>.finishersDefinition.EmailToSender.options.translation.translationFile
:aspect:`Data type`
string/ array
:aspect:`Needed by`
Frontend
:aspect:`Mandatory`
No
:aspect:`Default value`
undefined
:aspect:`Good to know`
- :ref:`"Email finisher"<apireference-finisheroptions-emailfinisher>`
- :ref:`"Accessing form runtime values"<concepts-finishers-customfinisherimplementations-accessingoptions-formruntimeaccessor>`
- :ref:`"Translate finisher options"<concepts-frontendrendering-translation-finishers>`
:aspect:`Description`
If set, this translation file(s) will be used for finisher option translations.
If not set, the translation file(s) from the 'Form' element will be used.
Read :ref:`Translate finisher options<concepts-frontendrendering-translation-finishers>` for more informations.
.. _typo3.cms.form.prototypes.<prototypeIdentifier>.finishersdefinition.emailtosender.options.templatepathandfilename:
options.templatePathAndFilename
-------------------------------
:aspect:`Option path`
TYPO3.CMS.Form.prototypes.<prototypeIdentifier>.finishersDefinition.EmailToSender.options.templatePathAndFilename
:aspect:`Data type`
string
:aspect:`Needed by`
Frontend
:aspect:`Mandatory`
Yes
:aspect:`Default value`
.. code-block:: yaml
:linenos:
:emphasize-lines: 2
EmailToSender:
options:
templatePathAndFilename: 'EXT:form/Resources/Private/Frontend/Templates/Finishers/Email/{@format}.html'
:aspect:`Good to know`
- :ref:`"Email finisher"<apireference-finisheroptions-emailfinisher>`
:aspect:`Description`
Template path and filename for the mail body.
The placeholder {\@format} will be replaced with the value from option ``format``.
.. _typo3.cms.form.prototypes.<prototypeIdentifier>.finishersdefinition.emailtosender.options.partialrootpaths:
options.partialRootPaths
------------------------
:aspect:`Option path`
TYPO3.CMS.Form.prototypes.<prototypeIdentifier>.finishersDefinition.EmailToSender.options.partialRootPaths
:aspect:`Data type`
array
:aspect:`Needed by`
Frontend
:aspect:`Mandatory`
No
:aspect:`Default value`
undefined
:aspect:`Good to know`
- :ref:`"Email finisher"<apireference-finisheroptions-emailfinisher>`
:aspect:`Description`
Fluid layout paths.
.. _typo3.cms.form.prototypes.<prototypeIdentifier>.finishersdefinition.emailtosender.options.layoutrootpaths:
options.layoutRootPaths
-----------------------
:aspect:`Option path`
TYPO3.CMS.Form.prototypes.<prototypeIdentifier>.finishersDefinition.EmailToSender.options.layoutRootPaths
:aspect:`Data type`
array
:aspect:`Needed by`
Frontend
:aspect:`Mandatory`
No
:aspect:`Default value`
undefined
:aspect:`Good to know`
- :ref:`"Email finisher"<apireference-finisheroptions-emailfinisher>`
:aspect:`Description`
Fluid partial paths.
.. _typo3.cms.form.prototypes.<prototypeIdentifier>.finishersdefinition.emailtosender.options.variables:
options.variables
-----------------
:aspect:`Option path`
TYPO3.CMS.Form.prototypes.<prototypeIdentifier>.finishersDefinition.EmailToSender.options.variables
:aspect:`Data type`
array
:aspect:`Needed by`
Frontend
:aspect:`Mandatory`
No
:aspect:`Default value`
undefined
:aspect:`Good to know`
- :ref:`"Email finisher"<apireference-finisheroptions-emailfinisher>`
:aspect:`Description`
Associative array of variables which are available inside the Fluid template.
.. _typo3.cms.form.prototypes.<prototypeIdentifier>.finishersdefinition.emailtosender.formeditor.iconidentifier:
formeditor.iconIdentifier
-------------------------
:aspect:`Option path`
TYPO3.CMS.Form.prototypes.<prototypeIdentifier>.finishersDefinition.EmailToSender.formEditor.iconIdentifier
:aspect:`Data type`
string
:aspect:`Needed by`
Backend (form editor)
:aspect:`Mandatory`
Yes
:aspect:`Default value`
.. code-block:: yaml
:linenos:
:emphasize-lines: 3
EmailToSender:
formEditor:
iconIdentifier: t3-form-icon-finisher
label: formEditor.elements.Form.finisher.EmailToSender.editor.header.label
predefinedDefaults:
options:
subject: ''
recipientAddress: ''
recipientName: ''
senderAddress: ''
senderName: ''
replyToAddress: ''
carbonCopyAddress: ''
blindCarbonCopyAddress: ''
format: html
attachUploads: true
translation:
language: ''
.. :aspect:`Good to know`
ToDo
:aspect:`Description`
.. include:: ../properties/iconIdentifier.rst
.. _typo3.cms.form.prototypes.<prototypeIdentifier>.finishersdefinition.emailtosender.formeditor.label:
formeditor.label
----------------
:aspect:`Option path`
TYPO3.CMS.Form.prototypes.<prototypeIdentifier>.finishersDefinition.EmailToSender.formEditor.label
:aspect:`Data type`
string
:aspect:`Needed by`
Backend (form editor)
:aspect:`Mandatory`
Yes
:aspect:`Default value`
.. code-block:: yaml
:linenos:
:emphasize-lines: 4
EmailToSender:
formEditor:
iconIdentifier: t3-form-icon-finisher
label: formEditor.elements.Form.finisher.EmailToSender.editor.header.label
predefinedDefaults:
options:
subject: ''
recipientAddress: ''
recipientName: ''
senderAddress: ''
senderName: ''
replyToAddress: ''
carbonCopyAddress: ''
blindCarbonCopyAddress: ''
format: html
attachUploads: true
translation:
language: ''
:aspect:`Good to know`
- :ref:`"Translate form editor settings"<concepts-formeditor-translation-formeditor>`
:aspect:`Description`
.. include:: ../properties/label.rst
.. _typo3.cms.form.prototypes.<prototypeIdentifier>.finishersdefinition.emailtosender.formeditor.predefineddefaults:
formeditor.predefinedDefaults
-----------------------------
:aspect:`Option path`
TYPO3.CMS.Form.prototypes.<prototypeIdentifier>.finishersDefinition.EmailToSender.formEditor.predefinedDefaults
:aspect:`Data type`
array
:aspect:`Needed by`
Backend (form editor)
:aspect:`Mandatory`
No
:aspect:`Default value`
.. code-block:: yaml
:linenos:
:emphasize-lines: 5-
EmailToSender:
formEditor:
iconIdentifier: t3-form-icon-finisher
label: formEditor.elements.Form.finisher.EmailToSender.editor.header.label
predefinedDefaults:
options:
subject: ''
recipientAddress: ''
recipientName: ''
senderAddress: ''
senderName: ''
replyToAddress: ''
carbonCopyAddress: ''
blindCarbonCopyAddress: ''
format: html
attachUploads: true
translation:
language: ''
.. :aspect:`Good to know`
ToDo
:aspect:`Description`
.. include:: ../properties/predefinedDefaults.rst
.. _typo3.cms.form.prototypes.<prototypeIdentifier>.finishersdefinition.emailtosender.formengine.label:
FormEngine.label
----------------
:aspect:`Option path`
TYPO3.CMS.Form.prototypes.<prototypeIdentifier>.finishersDefinition.EmailToSender.FormEngine.label
:aspect:`Data type`
array
:aspect:`Needed by`
Backend (plugin)
:aspect:`Mandatory`
Yes
:aspect:`Default value`
.. code-block:: yaml
:linenos:
:emphasize-lines: 3
EmailToSender:
FormEngine:
label: tt_content.finishersDefinition.EmailToSender.label
:aspect:`Good to know`
- :ref:`"Translate form plugin settings"<concepts-formplugin-translation-formengine>`
:aspect:`Description`
.. include:: ../properties/formEngine/label.rst
.. _typo3.cms.form.prototypes.<prototypeIdentifier>.finishersdefinition.emailtosender.formengine.elements:
FormEngine.elements
-------------------
:aspect:`Option path`
TYPO3.CMS.Form.prototypes.<prototypeIdentifier>.finishersDefinition.EmailToSender.FormEngine.elements
:aspect:`Data type`
array
:aspect:`Needed by`
Backend (plugin)
:aspect:`Mandatory`
Yes
:aspect:`Default value`
.. code-block:: yaml
:linenos:
:emphasize-lines: 4-
EmailToSender:
FormEngine:
label: tt_content.finishersDefinition.EmailToSender.label
elements:
subject:
label: tt_content.finishersDefinition.EmailToSender.subject.label
config:
type: input
recipientAddress:
label: tt_content.finishersDefinition.EmailToSender.recipientAddress.label
config:
type: input
eval: required
recipientName:
label: tt_content.finishersDefinition.EmailToSender.recipientName.label
config:
type: input
senderAddress:
label: tt_content.finishersDefinition.EmailToSender.senderAddress.label
config:
type: input
eval: required
senderName:
label: tt_content.finishersDefinition.EmailToSender.senderName.label
config:
type: input
replyToAddress:
label: tt_content.finishersDefinition.EmailToSender.replyToAddress.label
config:
type: input
carbonCopyAddress:
label: tt_content.finishersDefinition.EmailToSender.carbonCopyAddress.label
config:
type: input
blindCarbonCopyAddress:
label: tt_content.finishersDefinition.EmailToSender.blindCarbonCopyAddress.label
config:
type: input
format:
label: tt_content.finishersDefinition.EmailToSender.format.label
config:
type: select
renderType: selectSingle
minitems: 1
maxitems: 1
size: 1
items:
10:
- tt_content.finishersDefinition.EmailToSender.format.1
- html
20:
- tt_content.finishersDefinition.EmailToSender.format.2
- plaintext
translation:
language:
label: tt_content.finishersDefinition.EmailToSender.language.label
config:
type: select
renderType: selectSingle
minitems: 1
maxitems: 1
size: 1
items:
10:
- tt_content.finishersDefinition.EmailToSender.language.1
- default
:aspect:`Good to know`
- :ref:`"Translate form plugin settings"<concepts-formplugin-translation-formengine>`
:aspect:`Description`
.. include:: ../properties/formEngine/elements.rst
@@ -0,0 +1,341 @@
.. include:: ../../../../Includes.txt
.. _typo3.cms.form.prototypes.<prototypeidentifier>.finishersdefinition.flashmessage:
==============
[FlashMessage]
==============
.. _typo3.cms.form.prototypes.<prototypeidentifier>.finishersdefinitionflashmessage-properties:
Properties
==========
.. _typo3.cms.form.prototypes.<prototypeIdentifier>.finishersdefinition.flashmessage.implementationclassname:
implementationClassName
-----------------------
:aspect:`Option path`
TYPO3.CMS.Form.prototypes.<prototypeIdentifier>.finishersDefinition.FlashMessage.implementationClassName
:aspect:`Data type`
string
:aspect:`Needed by`
Frontend
:aspect:`Mandatory`
Yes
:aspect:`Default value`
.. code-block:: yaml
:linenos:
:emphasize-lines: 2
FlashMessage:
implementationClassName: TYPO3\CMS\Form\Domain\Finishers\FlashMessageFinisher
:aspect:`Good to know`
- :ref:`"Custom finisher implementations"<concepts-finishers-customfinisherimplementations>`
:aspect:`Description`
.. include:: ../properties/implementationClassName.rst
.. _typo3.cms.form.prototypes.<prototypeIdentifier>.finishersdefinition.flashmessage.options.messagebody:
options.messageBody
-------------------
:aspect:`Option path`
TYPO3.CMS.Form.prototypes.<prototypeIdentifier>.finishersDefinition.FlashMessage.options.messageBody
:aspect:`Data type`
string
:aspect:`Needed by`
Frontend
:aspect:`Mandatory`
Yes
:aspect:`Default value`
null
:aspect:`Good to know`
- :ref:`"FlashMessage finisher"<apireference-finisheroptions-flashmessagefinisher>`
- :ref:`"Accessing form runtime values"<concepts-finishers-customfinisherimplementations-accessingoptions-formruntimeaccessor>`
- :ref:`"Translate finisher options"<concepts-frontendrendering-translation-finishers>`
:aspect:`Description`
The flash message body TEXT.
.. _typo3.cms.form.prototypes.<prototypeIdentifier>.finishersdefinition.flashmessage.options.messagetitle:
options.messageTitle
--------------------
:aspect:`Option path`
TYPO3.CMS.Form.prototypes.<prototypeIdentifier>.finishersDefinition.FlashMessage.options.messageTitle
:aspect:`Data type`
string
:aspect:`Needed by`
Frontend
:aspect:`Mandatory`
No
:aspect:`Default value`
empty string
:aspect:`Good to know`
- :ref:`"FlashMessage finisher"<apireference-finisheroptions-flashmessagefinisher>`
- :ref:`"Accessing form runtime values"<concepts-finishers-customfinisherimplementations-accessingoptions-formruntimeaccessor>`
- :ref:`"Translate finisher options"<concepts-frontendrendering-translation-finishers>`
:aspect:`Description`
The flash message title.
.. _typo3.cms.form.prototypes.<prototypeIdentifier>.finishersdefinition.flashmessage.options.messagearguments:
options.messageArguments
------------------------
:aspect:`Option path`
TYPO3.CMS.Form.prototypes.<prototypeIdentifier>.finishersDefinition.FlashMessage.options.messageArguments
:aspect:`Data type`
array
:aspect:`Needed by`
Frontend
:aspect:`Mandatory`
No
:aspect:`Default value`
empty array
:aspect:`Good to know`
- :ref:`"FlashMessage finisher"<apireference-finisheroptions-flashmessagefinisher>`
- :ref:`"Accessing form runtime values"<concepts-finishers-customfinisherimplementations-accessingoptions-formruntimeaccessor>`
- :ref:`"Translate finisher options"<concepts-frontendrendering-translation-finishers>`
:aspect:`Description`
The flash message arguments, if needed.
.. _typo3.cms.form.prototypes.<prototypeIdentifier>.finishersdefinition.flashmessage.options.messagecode:
options.messageCode
-------------------
:aspect:`Option path`
TYPO3.CMS.Form.prototypes.<prototypeIdentifier>.finishersDefinition.FlashMessage.options.messageCode
:aspect:`Data type`
int
:aspect:`Needed by`
Frontend
:aspect:`Mandatory`
Yes
:aspect:`Default value`
null
:aspect:`Good to know`
- :ref:`"FlashMessage finisher"<apireference-finisheroptions-flashmessagefinisher>`
:aspect:`Description`
The flash message code, if needed.
.. _typo3.cms.form.prototypes.<prototypeIdentifier>.finishersdefinition.flashmessage.options.severity:
options.severity
----------------
:aspect:`Option path`
TYPO3.CMS.Form.prototypes.<prototypeIdentifier>.finishersDefinition.FlashMessage.options.severity
:aspect:`Data type`
int
:aspect:`Needed by`
Frontend
:aspect:`Mandatory`
No
:aspect:`Default value`
\TYPO3\CMS\Core\Messaging\AbstractMessage::OK (0)
:aspect:`Good to know`
- :ref:`"FlashMessage finisher"<apireference-finisheroptions-flashmessagefinisher>`
:aspect:`Description`
The flash message severity code.
See \TYPO3\CMS\Core\Messaging\AbstractMessage constants for the codes.
.. _typo3.cms.form.prototypes.<prototypeIdentifier>.finishersdefinition.flashmessage.options.translation.translationfile:
options.translation.translationFile
-----------------------------------
:aspect:`Option path`
TYPO3.CMS.Form.prototypes.<prototypeIdentifier>.finishersDefinition.FlashMessage.options.translation.translationFile
:aspect:`Data type`
string/ array
:aspect:`Needed by`
Frontend
:aspect:`Mandatory`
No
:aspect:`Default value`
undefined
:aspect:`Good to know`
- :ref:`"FlashMessage finisher"<apireference-finisheroptions-flashmessagefinisher>`
- :ref:`"Accessing form runtime values"<concepts-finishers-customfinisherimplementations-accessingoptions-formruntimeaccessor>`
- :ref:`"Translate finisher options"<concepts-frontendrendering-translation-finishers>`
:aspect:`Description`
If set, this translation file(s) will be used for finisher option translations.
If not set, the translation file(s) from the 'Form' element will be used.
Read :ref:`Translate finisher options<concepts-frontendrendering-translation-finishers>` for more informations.
.. _typo3.cms.form.prototypes.<prototypeIdentifier>.finishersdefinition.flashmessage.formeditor.iconidentifier:
formeditor.iconIdentifier
-------------------------
:aspect:`Option path`
TYPO3.CMS.Form.prototypes.<prototypeIdentifier>.finishersDefinition.FlashMessage.formEditor.iconIdentifier
:aspect:`Data type`
string
:aspect:`Needed by`
Backend (form editor)
:aspect:`Mandatory`
Yes
:aspect:`Default value`
.. code-block:: yaml
:linenos:
:emphasize-lines: 3
FlashMessage:
formEditor:
iconIdentifier: t3-form-icon-finisher
label: formEditor.elements.Form.finisher.FlashMessage.editor.header.label
predefinedDefaults:
options:
messageBody: ''
messageTitle: ''
messageArguments: ''
messageCode: 0
severity: 0
.. :aspect:`Good to know`
ToDo
:aspect:`Description`
.. include:: ../properties/iconIdentifier.rst
.. _typo3.cms.form.prototypes.<prototypeIdentifier>.finishersdefinition.flashmessage.formeditor.label:
formeditor.label
----------------
:aspect:`Option path`
TYPO3.CMS.Form.prototypes.<prototypeIdentifier>.finishersDefinition.FlashMessage.formEditor.label
:aspect:`Data type`
string
:aspect:`Needed by`
Backend (form editor)
:aspect:`Mandatory`
Yes
:aspect:`Default value`
.. code-block:: yaml
:linenos:
:emphasize-lines: 4
FlashMessage:
formEditor:
iconIdentifier: t3-form-icon-finisher
label: formEditor.elements.Form.finisher.FlashMessage.editor.header.label
predefinedDefaults:
options:
messageBody: ''
messageTitle: ''
messageArguments: ''
messageCode: 0
severity: 0
:aspect:`Good to know`
- :ref:`"Translate form editor settings"<concepts-formeditor-translation-formeditor>`
:aspect:`Description`
.. include:: ../properties/label.rst
.. _typo3.cms.form.prototypes.<prototypeIdentifier>.finishersdefinition.flashmessage.formeditor.predefineddefaults:
formeditor.predefinedDefaults
-----------------------------
:aspect:`Option path`
TYPO3.CMS.Form.prototypes.<prototypeIdentifier>.finishersDefinition.FlashMessage.formEditor.predefinedDefaults
:aspect:`Data type`
array
:aspect:`Needed by`
Backend (form editor)
:aspect:`Mandatory`
No
:aspect:`Default value`
.. code-block:: yaml
:linenos:
:emphasize-lines: 5-
FlashMessage:
formEditor:
iconIdentifier: t3-form-icon-finisher
label: formEditor.elements.Form.finisher.FlashMessage.editor.header.label
predefinedDefaults:
options:
messageBody: ''
messageTitle: ''
messageArguments: ''
messageCode: 0
severity: 0
.. :aspect:`Good to know`
ToDo
:aspect:`Description`
.. include:: ../properties/predefinedDefaults.rst
@@ -0,0 +1,386 @@
.. include:: ../../../../Includes.txt
.. _typo3.cms.form.prototypes.<prototypeidentifier>.finishersdefinition.redirect:
==========
[Redirect]
==========
.. _typo3.cms.form.prototypes.<prototypeidentifier>.finishersdefinitionredirect-properties:
Properties
==========
.. _typo3.cms.form.prototypes.<prototypeIdentifier>.finishersdefinition.redirect.implementationclassname:
implementationClassName
-----------------------
:aspect:`Option path`
TYPO3.CMS.Form.prototypes.<prototypeIdentifier>.finishersDefinition.Redirect.implementationClassName
:aspect:`Data type`
string
:aspect:`Needed by`
Frontend
:aspect:`Mandatory`
Yes
:aspect:`Default value`
.. code-block:: yaml
:linenos:
:emphasize-lines: 2
Redirect:
implementationClassName: TYPO3\CMS\Form\Domain\Finishers\RedirectFinisher
:aspect:`Good to know`
- :ref:`"Custom finisher implementations"<concepts-finishers-customfinisherimplementations>`
:aspect:`Description`
.. include:: ../properties/implementationClassName.rst
.. _typo3.cms.form.prototypes.<prototypeIdentifier>.finishersdefinition.redirect.options.pageuid:
options.pageUid
---------------
:aspect:`Option path`
TYPO3.CMS.Form.prototypes.<prototypeIdentifier>.finishersDefinition.Redirect.options.pageUid
:aspect:`Data type`
int
:aspect:`Needed by`
Frontend
:aspect:`Mandatory`
Yes
:aspect:`Default value`
1
:aspect:`Good to know`
- :ref:`"Redirect finisher"<apireference-finisheroptions-redirectfinisher>`
- :ref:`"Accessing form runtime values"<concepts-finishers-customfinisherimplementations-accessingoptions-formruntimeaccessor>`
:aspect:`Description`
Redirect to this page uid.
.. _typo3.cms.form.prototypes.<prototypeIdentifier>.finishersdefinition.redirect.options.additionalparameters:
options.additionalParameters
----------------------------
:aspect:`Option path`
TYPO3.CMS.Form.prototypes.<prototypeIdentifier>.finishersDefinition.Redirect.options.additionalParameters
:aspect:`Data type`
string
:aspect:`Needed by`
Frontend
:aspect:`Mandatory`
No
:aspect:`Default value`
empty string
:aspect:`Good to know`
- :ref:`"Redirect finisher"<apireference-finisheroptions-redirectfinisher>`
- :ref:`"Accessing form runtime values"<concepts-finishers-customfinisherimplementations-accessingoptions-formruntimeaccessor>`
:aspect:`Description`
Additional parameters which should be used on the target page.
.. _typo3.cms.form.prototypes.<prototypeIdentifier>.finishersdefinition.redirect.options.delay:
options.delay
-------------
:aspect:`Option path`
TYPO3.CMS.Form.prototypes.<prototypeIdentifier>.finishersDefinition.Redirect.options.delay
:aspect:`Data type`
int
:aspect:`Needed by`
Frontend
:aspect:`Mandatory`
No
:aspect:`Default value`
0
:aspect:`Good to know`
- :ref:`"Redirect finisher"<apireference-finisheroptions-redirectfinisher>`
- :ref:`"Accessing form runtime values"<concepts-finishers-customfinisherimplementations-accessingoptions-formruntimeaccessor>`
:aspect:`Description`
The redirect delay in seconds.
.. _typo3.cms.form.prototypes.<prototypeIdentifier>.finishersdefinition.redirect.options.statuscode:
options.statusCode
------------------
:aspect:`Option path`
TYPO3.CMS.Form.prototypes.<prototypeIdentifier>.finishersDefinition.Redirect.options.statusCode
:aspect:`Data type`
int
:aspect:`Needed by`
Frontend
:aspect:`Mandatory`
No
:aspect:`Default value`
303
:aspect:`Good to know`
- :ref:`"Redirect finisher"<apireference-finisheroptions-redirectfinisher>`
- :ref:`"Accessing form runtime values"<concepts-finishers-customfinisherimplementations-accessingoptions-formruntimeaccessor>`
:aspect:`Description`
The HTTP status code for the redirect. Default is "303 See Other".
.. _typo3.cms.form.prototypes.<prototypeIdentifier>.finishersdefinition.redirect.options.translation.translationfile:
options.translation.translationFile
-----------------------------------
:aspect:`Option path`
TYPO3.CMS.Form.prototypes.<prototypeIdentifier>.finishersDefinition.Redirect.options.translation.translationFile
:aspect:`Data type`
string/ array
:aspect:`Needed by`
Frontend
:aspect:`Mandatory`
No
:aspect:`Default value`
undefined
:aspect:`Good to know`
- :ref:`"Redirect finisher"<apireference-finisheroptions-redirectfinisher>`
- :ref:`"Accessing form runtime values"<concepts-finishers-customfinisherimplementations-accessingoptions-formruntimeaccessor>`
- :ref:`"Translate finisher options"<concepts-frontendrendering-translation-finishers>`
:aspect:`Description`
If set, this translation file(s) will be used for finisher option translations.
If not set, the translation file(s) from the 'Form' element will be used.
Read :ref:`Translate finisher options<concepts-frontendrendering-translation-finishers>` for more informations.
.. _typo3.cms.form.prototypes.<prototypeIdentifier>.finishersdefinition.redirect.formeditor.iconidentifier:
formeditor.iconIdentifier
-------------------------
:aspect:`Option path`
TYPO3.CMS.Form.prototypes.<prototypeIdentifier>.finishersDefinition.Redirect.formEditor.iconIdentifier
:aspect:`Data type`
string
:aspect:`Needed by`
Backend (form editor)
:aspect:`Mandatory`
Yes
:aspect:`Default value`
.. code-block:: yaml
:linenos:
:emphasize-lines: 3
Redirect:
formEditor:
iconIdentifier: t3-form-icon-finisher
label: formEditor.elements.Form.finisher.Redirect.editor.header.label
predefinedDefaults:
options:
pageUid: ''
additionalParameters: ''
.. :aspect:`Good to know`
ToDo
:aspect:`Description`
.. include:: ../properties/iconIdentifier.rst
.. _typo3.cms.form.prototypes.<prototypeIdentifier>.finishersdefinition.redirect.formeditor.label:
formeditor.label
----------------
:aspect:`Option path`
TYPO3.CMS.Form.prototypes.<prototypeIdentifier>.finishersDefinition.Redirect.formEditor.label
:aspect:`Data type`
string
:aspect:`Needed by`
Backend (form editor)
:aspect:`Mandatory`
Yes
:aspect:`Default value`
.. code-block:: yaml
:linenos:
:emphasize-lines: 4
Redirect:
formEditor:
iconIdentifier: t3-form-icon-finisher
label: formEditor.elements.Form.finisher.Redirect.editor.header.label
predefinedDefaults:
options:
pageUid: ''
additionalParameters: ''
:aspect:`Good to know`
- :ref:`"Translate form editor settings"<concepts-formeditor-translation-formeditor>`
:aspect:`Description`
.. include:: ../properties/label.rst
.. _typo3.cms.form.prototypes.<prototypeIdentifier>.finishersdefinition.redirect.formeditor.predefineddefaults:
formeditor.predefinedDefaults
-----------------------------
:aspect:`Option path`
TYPO3.CMS.Form.prototypes.<prototypeIdentifier>.finishersDefinition.Redirect.formEditor.predefinedDefaults
:aspect:`Data type`
array
:aspect:`Needed by`
Backend (form editor)
:aspect:`Mandatory`
No
:aspect:`Default value`
.. code-block:: yaml
:linenos:
:emphasize-lines: 5-
Redirect:
formEditor:
iconIdentifier: t3-form-icon-finisher
label: formEditor.elements.Form.finisher.Redirect.editor.header.label
predefinedDefaults:
options:
pageUid: ''
additionalParameters: ''
.. :aspect:`Good to know`
ToDo
:aspect:`Description`
.. include:: ../properties/predefinedDefaults.rst
.. _typo3.cms.form.prototypes.<prototypeIdentifier>.finishersdefinition.redirect.formengine.label:
FormEngine.label
----------------
:aspect:`Option path`
TYPO3.CMS.Form.prototypes.<prototypeIdentifier>.finishersDefinition.Redirect.FormEngine.label
:aspect:`Data type`
array
:aspect:`Needed by`
Backend (plugin)
:aspect:`Mandatory`
Yes
:aspect:`Default value`
.. code-block:: yaml
:linenos:
:emphasize-lines: 3
Redirect:
FormEngine:
label: tt_content.finishersDefinition.Redirect.label
:aspect:`Good to know`
- :ref:`"Translate form plugin settings"<concepts-formplugin-translation-formengine>`
:aspect:`Description`
.. include:: ../properties/formEngine/label.rst
.. _typo3.cms.form.prototypes.<prototypeIdentifier>.finishersdefinition.redirect.formengine.elements:
FormEngine.elements
-------------------
:aspect:`Option path`
TYPO3.CMS.Form.prototypes.<prototypeIdentifier>.finishersDefinition.Redirect.FormEngine.elements
:aspect:`Data type`
array
:aspect:`Needed by`
Backend (plugin)
:aspect:`Mandatory`
Yes
:aspect:`Default value`
.. code-block:: yaml
:linenos:
:emphasize-lines: 4-
Redirect:
FormEngine:
label: tt_content.finishersDefinition.Redirect.label
elements:
pageUid:
label: tt_content.finishersDefinition.Redirect.pageUid.label
config:
type: group
internal_type: db
allowed: pages
size: 1
minitems: 1
maxitems: 1
fieldWizard:
recordsOverview:
disabled: 1
additionalParameters:
label: tt_content.finishersDefinition.Redirect.additionalParameters.label
config:
type: input
:aspect:`Good to know`
- :ref:`"Translate form plugin settings"<concepts-formplugin-translation-formengine>`
:aspect:`Description`
.. include:: ../properties/formEngine/elements.rst
@@ -0,0 +1,523 @@
.. include:: ../../../../Includes.txt
.. _typo3.cms.form.prototypes.<prototypeidentifier>.finishersdefinition.savetodatabase:
================
[SaveToDatabase]
================
.. _typo3.cms.form.prototypes.<prototypeidentifier>.finishersdefinitionsavetodatabase-properties:
Properties
==========
.. _typo3.cms.form.prototypes.<prototypeIdentifier>.finishersdefinition.savetodatabase.implementationclassname:
implementationClassName
-----------------------
:aspect:`Option path`
TYPO3.CMS.Form.prototypes.<prototypeIdentifier>.finishersDefinition.SaveToDatabase.implementationClassName
:aspect:`Data type`
string
:aspect:`Needed by`
Frontend
:aspect:`Mandatory`
Yes
:aspect:`Default value`
.. code-block:: yaml
:linenos:
:emphasize-lines: 2
SaveToDatabase:
implementationClassName: TYPO3\CMS\Form\Domain\Finishers\SaveToDatabaseFinisher
:aspect:`Good to know`
- :ref:`"Custom finisher implementations"<concepts-finishers-customfinisherimplementations>`
:aspect:`Description`
.. include:: ../properties/implementationClassName.rst
.. _typo3.cms.form.prototypes.<prototypeIdentifier>.finishersdefinition.savetodatabase.options.table:
options.table
-------------
:aspect:`Option path`
TYPO3.CMS.Form.prototypes.<prototypeIdentifier>.finishersDefinition.SaveToDatabase.options.table
:aspect:`Data type`
string
:aspect:`Needed by`
Frontend
:aspect:`Mandatory`
Yes
:aspect:`Default value`
null
:aspect:`Good to know`
- :ref:`"SaveToDatabase finisher"<apireference-finisheroptions-savetodatabasefinisher>`
- :ref:`"Accessing form runtime values"<concepts-finishers-customfinisherimplementations-accessingoptions-formruntimeaccessor>`
:aspect:`Description`
Insert or update values into this table.
.. _typo3.cms.form.prototypes.<prototypeIdentifier>.finishersdefinition.savetodatabase.options.mode:
options.mode
------------
:aspect:`Option path`
TYPO3.CMS.Form.prototypes.<prototypeIdentifier>.finishersDefinition.SaveToDatabase.options.mode
:aspect:`Data type`
string
:aspect:`Needed by`
Frontend
:aspect:`Mandatory`
No
:aspect:`Default value`
'insert'
:aspect:`Possible values`
insert/ update
:aspect:`Good to know`
- :ref:`"SaveToDatabase finisher"<apireference-finisheroptions-savetodatabasefinisher>`
- :ref:`"Accessing form runtime values"<concepts-finishers-customfinisherimplementations-accessingoptions-formruntimeaccessor>`
:aspect:`Description`
``insert`` will create a new database row with the values from the submitted form and/or some predefined values. @see options.elements and options.databaseFieldMappings
``update`` will update a given database row with the values from the submitted form and/or some predefined values. 'options.whereClause' is then required.
.. _typo3.cms.form.prototypes.<prototypeIdentifier>.finishersdefinition.savetodatabase.options.whereclause:
options.whereClause
-------------------
:aspect:`Option path`
TYPO3.CMS.Form.prototypes.<prototypeIdentifier>.finishersDefinition.SaveToDatabase.options.whereClause
:aspect:`Data type`
array
:aspect:`Needed by`
Frontend
:aspect:`Mandatory`
Yes, if mode = update
:aspect:`Default value`
empty array
:aspect:`Good to know`
- :ref:`"SaveToDatabase finisher"<apireference-finisheroptions-savetodatabasefinisher>`
- :ref:`"Accessing form runtime values"<concepts-finishers-customfinisherimplementations-accessingoptions-formruntimeaccessor>`
:aspect:`Description`
This where clause will be used for a database update action.
.. _typo3.cms.form.prototypes.<prototypeIdentifier>.finishersdefinition.savetodatabase.options.elements:
options.elements
----------------
:aspect:`Option path`
TYPO3.CMS.Form.prototypes.<prototypeIdentifier>.finishersDefinition.SaveToDatabase.options.elements
:aspect:`Data type`
array
:aspect:`Needed by`
Frontend
:aspect:`Mandatory`
Yes
:aspect:`Default value`
empty array
:aspect:`Good to know`
- :ref:`"SaveToDatabase finisher"<apireference-finisheroptions-savetodatabasefinisher>`
- :ref:`"Accessing form runtime values"<concepts-finishers-customfinisherimplementations-accessingoptions-formruntimeaccessor>`
:aspect:`Description`
Use ``options.elements`` to map form element values to existing database columns.
Each key within ``options.elements`` has to match with a form element identifier.
The value for each key within ``options.elements`` is an array with additional informations.
.. _typo3.cms.form.prototypes.<prototypeIdentifier>.finishersdefinition.savetodatabase.options.elements.<formelementidentifier>.mapondatabasecolumn:
options.elements.<formElementIdentifier>.mapOnDatabaseColumn
------------------------------------------------------------
:aspect:`Option path`
TYPO3.CMS.Form.prototypes.<prototypeIdentifier>.finishersDefinition.SaveToDatabase.options.elements.<formElementIdentifier>.mapOnDatabaseColumn
:aspect:`Data type`
string
:aspect:`Needed by`
Frontend
:aspect:`Mandatory`
Yes
:aspect:`Default value`
undefined
:aspect:`Good to know`
- :ref:`"SaveToDatabase finisher"<apireference-finisheroptions-savetodatabasefinisher>`
- :ref:`"Accessing form runtime values"<concepts-finishers-customfinisherimplementations-accessingoptions-formruntimeaccessor>`
:aspect:`Description`
The value from the submitted form element with the identifier ``<formElementIdentifier>`` will be written into this database column.
.. _typo3.cms.form.prototypes.<prototypeIdentifier>.finishersdefinition.savetodatabase.options.elements.<formelementidentifier>.savefileidentifierinsteadofuid:
options.elements.<formElementIdentifier>.saveFileIdentifierInsteadOfUid
-------------------------------------------------------------------------------------------
:aspect:`Option path`
TYPO3.CMS.Form.prototypes.<prototypeIdentifier>.finishersDefinition.SaveToDatabase.options.elements.<formElementIdentifier>.saveFileIdentifierInsteadOfUid
:aspect:`Data type`
bool
:aspect:`Needed by`
Frontend
:aspect:`Mandatory`
No
:aspect:`Default value`
false
:aspect:`Good to know`
- :ref:`"SaveToDatabase finisher"<apireference-finisheroptions-savetodatabasefinisher>`
- :ref:`"Accessing form runtime values"<concepts-finishers-customfinisherimplementations-accessingoptions-formruntimeaccessor>`
:aspect:`Description`
Set this to true if the database column should not be written if the value from the submitted form element with the identifier
``<formElementIdentifier>`` is empty (think about password fields etc.).
This setting only rules for form elements which creates a FAL object like ``FileUpload`` or ``ImageUpload``.
By default, the uid of the FAL object will be written into the database column. Set this to true if you want to store the
FAL identifier (1:/user_uploads/some_uploaded_pic.jpg) instead.
.. _typo3.cms.form.prototypes.<prototypeIdentifier>.finishersdefinition.savetodatabase.options.elements.<formelementidentifier>.skipifvalueisempty:
options.elements.<formElementIdentifier>.skipIfValueIsEmpty
-------------------------------------------------------------------------------
:aspect:`Option path`
TYPO3.CMS.Form.prototypes.<prototypeIdentifier>.finishersDefinition.SaveToDatabase.options.elements.<formElementIdentifier>.skipIfValueIsEmpty
:aspect:`Data type`
bool
:aspect:`Needed by`
Frontend
:aspect:`Mandatory`
No
:aspect:`Default value`
false
:aspect:`Good to know`
- :ref:`"SaveToDatabase finisher"<apireference-finisheroptions-savetodatabasefinisher>`
- :ref:`"Accessing form runtime values"<concepts-finishers-customfinisherimplementations-accessingoptions-formruntimeaccessor>`
:aspect:`Description`
Set this to true if the database column should not be written if the value from the submitted form element with the identifier
``<formElementIdentifier>`` is empty (think about password fields etc.). Empty means strings without content, whitespace
is valid content.
.. _typo3.cms.form.prototypes.<prototypeIdentifier>.finishersdefinition.savetodatabase.options.elements.<formelementidentifier>.dateformat:
options.elements.<formElementIdentifier>.dateFormat
---------------------------------------------------
:aspect:`Option path`
TYPO3.CMS.Form.prototypes.<prototypeIdentifier>.finishersDefinition.SaveToDatabase.options.elements.<formElementIdentifier>.dateFormat
:aspect:`Data type`
string
:aspect:`Needed by`
Frontend
:aspect:`Mandatory`
No
:aspect:`Default value`
'U'
:aspect:`Good to know`
- :ref:`"SaveToDatabase finisher"<apireference-finisheroptions-savetodatabasefinisher>`
- :ref:`"Accessing form runtime values"<concepts-finishers-customfinisherimplementations-accessingoptions-formruntimeaccessor>`
:aspect:`Description`
If the internal Datatype is \DateTime which is true for the form element types "DatePicker" and "Date",
the object needs to be converted into a string value.
This option allows you to define the format of the date.
You can use every format accepted by PHP's date() function (http://php.net/manual/en/function.date.php#refsect1-function.date-parameters).
The default value is "U" which means a Unix timestamp.
.. _typo3.cms.form.prototypes.<prototypeIdentifier>.finishersdefinition.savetodatabase.options.databasecolumnmappings:
options.databaseColumnMappings
------------------------------
:aspect:`Option path`
TYPO3.CMS.Form.prototypes.<prototypeIdentifier>.finishersDefinition.SaveToDatabase.options.databaseColumnMappings
:aspect:`Data type`
array
:aspect:`Needed by`
Frontend
:aspect:`Mandatory`
No
:aspect:`Default value`
empty array
:aspect:`Good to know`
- :ref:`"SaveToDatabase finisher"<apireference-finisheroptions-savetodatabasefinisher>`
- :ref:`"Accessing form runtime values"<concepts-finishers-customfinisherimplementations-accessingoptions-formruntimeaccessor>`
:aspect:`Description`
Use this to map database columns to static values.
Each key within ``options.databaseColumnMappings`` has to match with an existing database column.
The value for each key within ``options.databaseColumnMappings`` is an array with additional informations.
This mapping is done *before* the ``options.element`` mapping.
This means if you map a database column to a value through ``options.databaseColumnMappings`` and map a submitted
form element value to the same database column through ``options.element``, the submitted form element value
will override the value you set within ``options.databaseColumnMappings``.
.. _typo3.cms.form.prototypes.<prototypeIdentifier>.finishersdefinition.savetodatabase.options.databasecolumnmappings.<databasecolumnname>.value:
options.databaseColumnMappings.<databaseColumnName>.value
---------------------------------------------------------
:aspect:`Option path`
TYPO3.CMS.Form.prototypes.<prototypeIdentifier>.finishersDefinition.SaveToDatabase.options.databaseColumnMappings.<databaseColumnName>.value
:aspect:`Data type`
string
:aspect:`Needed by`
Frontend
:aspect:`Mandatory`
Yes
:aspect:`Default value`
undefined
:aspect:`Good to know`
- :ref:`"SaveToDatabase finisher"<apireference-finisheroptions-savetodatabasefinisher>`
- :ref:`"Accessing form runtime values"<concepts-finishers-customfinisherimplementations-accessingoptions-formruntimeaccessor>`
:aspect:`Description`
The value which will be written to the database column.
You can also use the :ref:`FormRuntime accessor feature<concepts-finishers-customfinisherimplementations-accessingoptions-formruntimeaccessor>` to access every getable property from the ``FormRuntime``
In short: use something like ``{<formElementIdentifier>}`` to get the value from the submitted form element with the identifier ``<formElementIdentifier>``.
If you use the FormRuntime accessor feature within ``options.databaseColumnMappings`` the functionality is nearly equal
to the ``options.elements`` configuration variant.
.. _typo3.cms.form.prototypes.<prototypeIdentifier>.finishersdefinition.savetodatabase.options.databasecolumnmappings.<databasecolumnname>.skipifvalueisempty:
options.databaseColumnMappings.<databaseColumnName>.skipIfValueIsEmpty
----------------------------------------------------------------------
:aspect:`Option path`
TYPO3.CMS.Form.prototypes.<prototypeIdentifier>.finishersDefinition.SaveToDatabase.options.databaseColumnMappings.<databaseColumnName>.skipIfValueIsEmpty
:aspect:`Data type`
bool
:aspect:`Needed by`
Frontend
:aspect:`Mandatory`
No
:aspect:`Default value`
undefined
:aspect:`Good to know`
- :ref:`"SaveToDatabase finisher"<apireference-finisheroptions-savetodatabasefinisher>`
- :ref:`"Accessing form runtime values"<concepts-finishers-customfinisherimplementations-accessingoptions-formruntimeaccessor>`
:aspect:`Description`
Set this to true if the database column should not be written if the value from `options.databaseColumnMappings.
<databaseColumnName>.value` is empty. Empty means strings without content, whitespace is valid content.
.. _typo3.cms.form.prototypes.<prototypeIdentifier>.finishersdefinition.savetodatabase.options.translation.translationfile:
options.translation.translationFile
-----------------------------------
:aspect:`Option path`
TYPO3.CMS.Form.prototypes.<prototypeIdentifier>.finishersDefinition.SaveToDatabase.options.translation.translationFile
:aspect:`Data type`
string/ array
:aspect:`Needed by`
Frontend
:aspect:`Mandatory`
No
:aspect:`Default value`
undefined
:aspect:`Good to know`
- :ref:`"SaveToDatabase finisher"<apireference-finisheroptions-savetodatabasefinisher>`
- :ref:`"Accessing form runtime values"<concepts-finishers-customfinisherimplementations-accessingoptions-formruntimeaccessor>`
- :ref:`"Translate finisher options"<concepts-frontendrendering-translation-finishers>`
:aspect:`Description`
If set, this translation file(s) will be used for finisher option translations.
If not set, the translation file(s) from the 'Form' element will be used.
Read :ref:`Translate finisher options<concepts-frontendrendering-translation-finishers>` for more informations.
.. _typo3.cms.form.prototypes.<prototypeIdentifier>.finishersdefinition.savetodatabase.formeditor.iconidentifier:
formeditor.iconIdentifier
-------------------------
:aspect:`Option path`
TYPO3.CMS.Form.prototypes.<prototypeIdentifier>.finishersDefinition.SaveToDatabase.formEditor.iconIdentifier
:aspect:`Data type`
string
:aspect:`Needed by`
Backend (form editor)
:aspect:`Mandatory`
Yes
:aspect:`Default value`
.. code-block:: yaml
:linenos:
:emphasize-lines: 3
SaveToDatabase:
formEditor:
iconIdentifier: t3-form-icon-finisher
label: formEditor.elements.Form.finisher.SaveToDatabase.editor.header.label
predefinedDefaults:
options: { }
.. :aspect:`Good to know`
ToDo
:aspect:`Description`
.. include:: ../properties/iconIdentifier.rst
.. _typo3.cms.form.prototypes.<prototypeIdentifier>.finishersdefinition.savetodatabase.formeditor.label:
formeditor.label
----------------
:aspect:`Option path`
TYPO3.CMS.Form.prototypes.<prototypeIdentifier>.finishersDefinition.SaveToDatabase.formEditor.label
:aspect:`Data type`
string
:aspect:`Needed by`
Backend (form editor)
:aspect:`Mandatory`
Yes
:aspect:`Default value`
.. code-block:: yaml
:linenos:
:emphasize-lines: 4
SaveToDatabase:
formEditor:
iconIdentifier: t3-form-icon-finisher
label: formEditor.elements.Form.finisher.SaveToDatabase.editor.header.label
predefinedDefaults:
options: { }
:aspect:`Good to know`
- :ref:`"Translate form editor settings"<concepts-formeditor-translation-formeditor>`
:aspect:`Description`
.. include:: ../properties/label.rst
.. _typo3.cms.form.prototypes.<prototypeIdentifier>.finishersdefinition.savetodatabase.formeditor.predefineddefaults:
formeditor.predefinedDefaults
-----------------------------
:aspect:`Option path`
TYPO3.CMS.Form.prototypes.<prototypeIdentifier>.finishersDefinition.SaveToDatabase.formEditor.predefinedDefaults
:aspect:`Data type`
array
:aspect:`Needed by`
Backend (form editor)
:aspect:`Mandatory`
No
:aspect:`Default value`
.. code-block:: yaml
:linenos:
:emphasize-lines: 5-
SaveToDatabase:
formEditor:
iconIdentifier: t3-form-icon-finisher
label: formEditor.elements.Form.finisher.SaveToDatabase.editor.header.label
predefinedDefaults:
options: { }
.. :aspect:`Good to know`
ToDo
:aspect:`Description`
.. include:: ../properties/predefinedDefaults.rst
@@ -0,0 +1,4 @@
Every array key must match to the related finisher option name.
For example, the - :ref:`"[Redirect] finisher"<typo3.cms.form.prototypes.\<prototypeidentifier>.finishersdefinition.redirect>` has the option - :ref:`"pageUid"<typo3.cms.form.prototypes.\<prototypeIdentifier>.finishersdefinition.redirect.options.pageuid>`.
If you want to make the ``pageUid`` overwritable within the ``form plugin``, then an array key ``pageUid`` has to exists within ``TYPO3.CMS.Form.prototypes.<prototypeIdentifier>.finishersDefinition.<finisherIdentifier>.FormEngine.elements``.
The configuration within ``TYPO3.CMS.Form.prototypes.<prototypeIdentifier>.finishersDefinition.Redirect.FormEngine.elements.pageUid`` must follow the TCA syntax.
@@ -0,0 +1,3 @@
Finisher options are overwritable within the ``form plugin``.
If the "Override finisher settings" checkbox is selected within the ``form plugin``, every finisher who has a - :ref:`"FormEngine"<typo3.cms.form.prototypes.\<prototypeIdentifier>.finishersdefinition.\<finisheridentifier>.formengine>` configuration, is shown in a seperate tab.
``label`` is the label for such a tab.
@@ -0,0 +1,2 @@
An icon identifier which must be registered through the ``\TYPO3\CMS\Core\Imaging\IconRegistry``.
This icon will be shown within the - :ref:`"Inspector [CollectionElementHeaderEditor]"<typo3.cms.form.prototypes.\<prototypeidentifier>.formelementsdefinition.\<formelementtypeidentifier>.formeditor.editors.*.collectionelementheadereditor>` if the finisher is selected.
@@ -0,0 +1 @@
Classname which implements the finisher.
@@ -0,0 +1 @@
This label will be shown within the - :ref:`"Inspector [CollectionElementHeaderEditor]"<typo3.cms.form.prototypes.\<prototypeidentifier>.formelementsdefinition.\<formelementtypeidentifier>.formeditor.editors.*.collectionelementheadereditor>` if the finisher is selected.
@@ -0,0 +1 @@
Defines predefined defaults for finisher options which are prefilled, if the finisher is added to a form.
@@ -0,0 +1,725 @@
.. include:: ../../../Includes.txt
.. _typo3.cms.form.prototypes.<prototypeidentifier>.formeditor:
============
[formEditor]
============
.. _typo3.cms.form.prototypes.<prototypeidentifier>.formeditor-properties:
Properties
==========
.. _typo3.cms.form.prototypes.<prototypeidentifier>.formeditor.translationfile:
translationFile
---------------
:aspect:`Option path`
TYPO3.CMS.Form.prototypes.<prototypeIdentifier>.formeditor.translationFile
:aspect:`Data type`
string/ array
:aspect:`Needed by`
Backend (form editor)
:aspect:`Mandatory`
Yes
:aspect:`Default value (prototype 'standard')`
.. code-block:: yaml
:linenos:
:emphasize-lines: 2
formEditor:
translationFile: 'EXT:form/Resources/Private/Language/Database.xlf'
:aspect:`Good to know`
- :ref:`"Translate form editor settings"<concepts-formeditor-translation-formeditor>`
:aspect:`Description`
Filesystem path(s) to translation files which should be searched for form editor translations.
.. _typo3.cms.form.prototypes.<prototypeidentifier>.formeditor.dynamicrequirejsmodules.app:
dynamicRequireJsModules.app
---------------------------
:aspect:`Option path`
TYPO3.CMS.Form.prototypes.<prototypeIdentifier>.formeditor.dynamicRequireJsModules.app
:aspect:`Data type`
string
:aspect:`Needed by`
Backend (form editor)
:aspect:`Mandatory`
Yes
:aspect:`Default value (prototype 'standard')`
.. code-block:: yaml
:linenos:
:emphasize-lines: 3
formEditor:
dynamicRequireJsModules:
app: TYPO3/CMS/Form/Backend/FormEditor
mediator: TYPO3/CMS/Form/Backend/FormEditor/Mediator
viewModel: TYPO3/CMS/Form/Backend/FormEditor/ViewModel
:aspect:`Good to know`
- :ref:`"Form editor"<concepts-formeditor>`
:aspect:`Description`
RequireJS path for the form editor JavaScript app.
.. _typo3.cms.form.prototypes.<prototypeidentifier>.formeditor.dynamicrequirejsmodules.mediator:
dynamicRequireJsModules.mediator
--------------------------------
:aspect:`Option path`
TYPO3.CMS.Form.prototypes.<prototypeIdentifier>.formeditor.dynamicRequireJsModules.mediator
:aspect:`Data type`
string
:aspect:`Needed by`
Backend (form editor)
:aspect:`Mandatory`
Yes
:aspect:`Default value (prototype 'standard')`
.. code-block:: yaml
:linenos:
:emphasize-lines: 4
formEditor:
dynamicRequireJsModules:
app: TYPO3/CMS/Form/Backend/FormEditor
mediator: TYPO3/CMS/Form/Backend/FormEditor/Mediator
viewModel: TYPO3/CMS/Form/Backend/FormEditor/ViewModel
:aspect:`Good to know`
- :ref:`"Form editor"<concepts-formeditor>`
:aspect:`Description`
RequireJS path for the form editor JavaScript mediator.
.. _typo3.cms.form.prototypes.<prototypeidentifier>.formeditor.dynamicrequirejsmodules.viewmodel:
dynamicRequireJsModules.viewModel
---------------------------------
:aspect:`Option path`
TYPO3.CMS.Form.prototypes.<prototypeIdentifier>.formeditor.dynamicRequireJsModules.viewModel
:aspect:`Data type`
string
:aspect:`Needed by`
Backend (form editor)
:aspect:`Mandatory`
Yes
:aspect:`Default value (prototype 'standard')`
.. code-block:: yaml
:linenos:
:emphasize-lines: 5
formEditor:
dynamicRequireJsModules:
app: TYPO3/CMS/Form/Backend/FormEditor
mediator: TYPO3/CMS/Form/Backend/FormEditor/Mediator
viewModel: TYPO3/CMS/Form/Backend/FormEditor/ViewModel
:aspect:`Good to know`
- :ref:`"Form editor"<concepts-formeditor>`
:aspect:`Description`
RequireJS path for the form editor JavaScript view model.
.. _typo3.cms.form.prototypes.<prototypeidentifier>.formeditor.dynamicrequirejsmodules.additionalviewmodelmodules:
dynamicRequireJsModules.additionalViewModelModules
--------------------------------------------------
:aspect:`Option path`
TYPO3.CMS.Form.prototypes.<prototypeIdentifier>.formeditor.dynamicRequireJsModules.additionalViewModelModules
:aspect:`Data type`
array
:aspect:`Needed by`
Backend (form editor)
:aspect:`Mandatory`
No
:aspect:`Default value (prototype 'standard')`
undefined
:aspect:`Good to know`
- :ref:`"Form editor"<concepts-formeditor>`
- :ref:`"Register custom JavaScript modules"<concepts-formeditor-basicjavascriptconcepts-registercustomjavascriptmodules>`
:aspect:`Description`
Array with RequireJS paths for custom JavaScript modules.
.. _typo3.cms.form.prototypes.<prototypeidentifier>.formeditor.addinlinesettings:
addInlineSettings
-----------------
:aspect:`Option path`
TYPO3.CMS.Form.prototypes.<prototypeIdentifier>.formeditor.addInlineSettings
:aspect:`Data type`
array
:aspect:`Needed by`
Backend (form editor)
:aspect:`Mandatory`
No
:aspect:`Default value (prototype 'standard')`
undefined
:aspect:`Good to know`
- :ref:`"Form editor"<concepts-formeditor>`
:aspect:`Description`
Adds Javascript Inline Setting. This will occur in TYPO3.settings - object.
.. _typo3.cms.form.prototypes.<prototypeidentifier>.formeditor.maximumundosteps:
maximumUndoSteps
----------------
:aspect:`Option path`
TYPO3.CMS.Form.prototypes.<prototypeIdentifier>.formeditor.maximumUndoSteps
:aspect:`Data type`
int
:aspect:`Needed by`
Backend (form editor)
:aspect:`Mandatory`
Yes
:aspect:`Default value (prototype 'standard')`
.. code-block:: yaml
:linenos:
:emphasize-lines: 5
formEditor:
maximumUndoSteps: 10
:aspect:`Good to know`
- :ref:`"Form editor"<concepts-formeditor>`
:aspect:`Description`
Define the maximum possible undo steps within the form editor.
.. _typo3.cms.form.prototypes.<prototypeidentifier>.formeditor.stylesheets:
stylesheets
-----------
:aspect:`Option path`
TYPO3.CMS.Form.prototypes.<prototypeIdentifier>.formeditor.stylesheets
:aspect:`Data type`
array
:aspect:`Needed by`
Backend (form editor)
:aspect:`Mandatory`
Yes
:aspect:`Default value (prototype 'standard')`
.. code-block:: yaml
:linenos:
:emphasize-lines: 2-
formEditor:
stylesheets:
200: 'EXT:form/Resources/Public/Css/form.css'
:aspect:`Good to know`
- :ref:`"Form editor"<concepts-formeditor>`
:aspect:`Description`
The CSS files to be used by the ``form editor``.
.. _typo3.cms.form.prototypes.<prototypeidentifier>.formeditor.formeditorfluidconfiguration:
formEditorFluidConfiguration
----------------------------
:aspect:`Option path`
TYPO3.CMS.Form.prototypes.<prototypeIdentifier>.formeditor.formEditorFluidConfiguration
:aspect:`Data type`
array
:aspect:`Needed by`
Backend (form editor)
:aspect:`Mandatory`
Yes
:aspect:`Default value (prototype 'standard')`
.. code-block:: yaml
:linenos:
:emphasize-lines: 2-
formEditor:
formEditorFluidConfiguration:
templatePathAndFilename: 'EXT:form/Resources/Private/Backend/Templates/FormEditor/InlineTemplates.html'
partialRootPaths:
10: 'EXT:form/Resources/Private/Backend/Partials/FormEditor/'
layoutRootPaths:
10: 'EXT:form/Resources/Private/Backend/Layouts/FormEditor/'
:aspect:`Good to know`
- :ref:`"Form editor"<concepts-formeditor>`
- :ref:`"view/inspector/editor/insert/perform"<apireference-formeditor-basicjavascriptconcepts-events-view-inspector-editor-insert-perform>`
:aspect:`Description`
Basic fluid template search path configurations.
.. _typo3.cms.form.prototypes.<prototypeidentifier>.formeditor.formeditorfluidconfiguration.templatepathandfilename:
formEditorFluidConfiguration.templatePathAndFilename
----------------------------------------------------
:aspect:`Option path`
TYPO3.CMS.Form.prototypes.<prototypeIdentifier>.formeditor.formEditorFluidConfiguration.templatePathAndFilename
:aspect:`Data type`
string
:aspect:`Needed by`
Backend (form editor)
:aspect:`Mandatory`
Yes
:aspect:`Default value (prototype 'standard')`
.. code-block:: yaml
:linenos:
:emphasize-lines: 3
formEditor:
formEditorFluidConfiguration:
templatePathAndFilename: 'EXT:form/Resources/Private/Backend/Templates/FormEditor/InlineTemplates.html'
partialRootPaths:
10: 'EXT:form/Resources/Private/Backend/Partials/FormEditor/'
layoutRootPaths:
10: 'EXT:form/Resources/Private/Backend/Layouts/FormEditor/'
:aspect:`Good to know`
- :ref:`"Form editor"<concepts-formeditor>`
:aspect:`Description`
Internal setting. Template which render the inline HTML templates which are used by the form editor JavaScript.
.. _typo3.cms.form.prototypes.<prototypeidentifier>.formeditor.formeditorfluidconfiguration.partialrootpaths:
formEditorFluidConfiguration.partialRootPaths
---------------------------------------------
:aspect:`Option path`
TYPO3.CMS.Form.prototypes.<prototypeIdentifier>.formeditor.formEditorFluidConfiguration.partialRootPaths
:aspect:`Data type`
array
:aspect:`Needed by`
Backend (form editor)
:aspect:`Mandatory`
Yes
:aspect:`Default value (prototype 'standard')`
.. code-block:: yaml
:linenos:
:emphasize-lines: 4-5
formEditor:
formEditorFluidConfiguration:
templatePathAndFilename: 'EXT:form/Resources/Private/Backend/Templates/FormEditor/InlineTemplates.html'
partialRootPaths:
10: 'EXT:form/Resources/Private/Backend/Partials/FormEditor/'
layoutRootPaths:
10: 'EXT:form/Resources/Private/Backend/Layouts/FormEditor/'
:aspect:`Good to know`
- :ref:`"Form editor"<concepts-formeditor>`
- :ref:`"view/inspector/editor/insert/perform"<apireference-formeditor-basicjavascriptconcepts-events-view-inspector-editor-insert-perform>`
:aspect:`Description`
Array with fluid partial search paths for the inline HTML templates which are used by the form editor JavaScript.
.. _typo3.cms.form.prototypes.<prototypeidentifier>.formeditor.formeditorfluidconfiguration.layoutrootpaths:
formEditorFluidConfiguration.layoutRootPaths
--------------------------------------------
:aspect:`Option path`
TYPO3.CMS.Form.prototypes.<prototypeIdentifier>.formeditor.formEditorFluidConfiguration.layoutRootPaths
:aspect:`Data type`
array
:aspect:`Needed by`
Backend (form editor)
:aspect:`Mandatory`
Yes
:aspect:`Default value (prototype 'standard')`
.. code-block:: yaml
:linenos:
:emphasize-lines: 6-7
formEditor:
formEditorFluidConfiguration:
templatePathAndFilename: 'EXT:form/Resources/Private/Backend/Templates/FormEditor/InlineTemplates.html'
partialRootPaths:
10: 'EXT:form/Resources/Private/Backend/Partials/FormEditor/'
layoutRootPaths:
10: 'EXT:form/Resources/Private/Backend/Layouts/FormEditor/'
:aspect:`Good to know`
- :ref:`"Form editor"<concepts-formeditor>`
- :ref:`"view/inspector/editor/insert/perform"<apireference-formeditor-basicjavascriptconcepts-events-view-inspector-editor-insert-perform>`
:aspect:`Description`
Internal setting. Array with fluid layout search paths.
.. _typo3.cms.form.prototypes.<prototypeidentifier>.formeditor.formeditorpartials:
formEditorPartials
------------------
:aspect:`Option path`
TYPO3.CMS.Form.prototypes.<prototypeIdentifier>.formeditor.formEditorPartials
:aspect:`Data type`
array
:aspect:`Needed by`
Backend (form editor)
:aspect:`Mandatory`
Yes
:aspect:`Default value (prototype 'standard')`
.. code-block:: yaml
:linenos:
:emphasize-lines: 2-
formEditor:
formEditorPartials:
FormElement-_ElementToolbar: Stage/_ElementToolbar
FormElement-_UnknownElement: Stage/_UnknownElement
FormElement-Page: Stage/Page
FormElement-SummaryPage: Stage/SummaryPage
FormElement-Fieldset: Stage/Fieldset
FormElement-GridContainer: Stage/Fieldset
FormElement-GridRow: Stage/Fieldset
FormElement-Text: Stage/SimpleTemplate
FormElement-Password: Stage/SimpleTemplate
FormElement-AdvancedPassword: Stage/SimpleTemplate
FormElement-Textarea: Stage/SimpleTemplate
FormElement-Checkbox: Stage/SimpleTemplate
FormElement-MultiCheckbox: Stage/SelectTemplate
FormElement-MultiSelect: Stage/SelectTemplate
FormElement-RadioButton: Stage/SelectTemplate
FormElement-SingleSelect: Stage/SelectTemplate
FormElement-DatePicker: Stage/SimpleTemplate
FormElement-StaticText: Stage/StaticText
FormElement-Hidden: Stage/SimpleTemplate
FormElement-ContentElement: Stage/ContentElement
FormElement-FileUpload: Stage/FileUploadTemplate
FormElement-ImageUpload: Stage/FileUploadTemplate
FormElement-Email: 'Stage/SimpleTemplate'
FormElement-Telephone: 'Stage/SimpleTemplate'
FormElement-Url: 'Stage/SimpleTemplate'
FormElement-Number: 'Stage/SimpleTemplate'
FormElement-Date: 'Stage/SimpleTemplate'
Modal-InsertElements: Modals/InsertElements
Modal-InsertPages: Modals/InsertPages
Modal-ValidationErrors: Modals/ValidationErrors
Inspector-FormElementHeaderEditor: Inspector/FormElementHeaderEditor
Inspector-CollectionElementHeaderEditor: Inspector/CollectionElementHeaderEditor
Inspector-TextEditor: Inspector/TextEditor
Inspector-PropertyGridEditor: Inspector/PropertyGridEditor
Inspector-SingleSelectEditor: Inspector/SingleSelectEditor
Inspector-MultiSelectEditor: Inspector/MultiSelectEditor
Inspector-GridColumnViewPortConfigurationEditor: Inspector/GridColumnViewPortConfigurationEditor
Inspector-TextareaEditor: Inspector/TextareaEditor
Inspector-RemoveElementEditor: Inspector/RemoveElementEditor
Inspector-FinishersEditor: Inspector/FinishersEditor
Inspector-ValidatorsEditor: Inspector/ValidatorsEditor
Inspector-RequiredValidatorEditor: Inspector/RequiredValidatorEditor
Inspector-CheckboxEditor: Inspector/CheckboxEditor
Inspector-ValidationErrorMessageEditor: Inspector/ValidationErrorMessageEditor
Inspector-Typo3WinBrowserEditor: Inspector/Typo3WinBrowserEditor
:aspect:`Good to know`
- :ref:`"Form editor"<concepts-formeditor>`
- :ref:`"Common Abstract view formelement templates"<apireference-formeditor-stage-commonabstractformelementtemplates>`
- :ref:`"available inspector editors"<typo3.cms.form.prototypes.\<prototypeidentifier>.formelementsdefinition.\<formelementtypeidentifier>.formEditor.editors-availableinspectoreditors>`
- :ref:`"view/inspector/editor/insert/perform"<apireference-formeditor-basicjavascriptconcepts-events-view-inspector-editor-insert-perform>`
:aspect:`Description`
Array with mappings for the inline HTML templates. The keys are identifierts which could be used within the JavaScript code. The values are partial paths, relative to :ref:`"TYPO3.CMS.Form.prototypes.\<prototypeIdentifier>.formeditor.formEditorFluidConfiguration.partialRootPaths"<typo3.cms.form.prototypes.\<prototypeidentifier>.formeditor.formeditorfluidconfiguration.partialrootpaths>`.
The partials content will be rendered as inline HTML. This inline HTML templates can be identified and used by such a key (e.g. "Inspector-TextEditor") within the JavaScript code.
.. _typo3.cms.form.prototypes.<prototypeidentifier>.formeditor.formelementpropertyvalidatorsdefinition:
formElementPropertyValidatorsDefinition
---------------------------------------
:aspect:`Option path`
TYPO3.CMS.Form.prototypes.<prototypeIdentifier>.formeditor.formElementPropertyValidatorsDefinition
:aspect:`Data type`
array
:aspect:`Needed by`
Backend (form editor)
:aspect:`Mandatory`
Yes
:aspect:`Default value (prototype 'standard')`
.. code-block:: yaml
:linenos:
:emphasize-lines: 2-
formEditor:
formElementPropertyValidatorsDefinition:
NotEmpty:
errorMessage: formEditor.formElementPropertyValidatorsDefinition.NotEmpty.label
Integer:
errorMessage: formEditor.formElementPropertyValidatorsDefinition.Integer.label
NaiveEmail:
errorMessage: formEditor.formElementPropertyValidatorsDefinition.NaiveEmail.label
NaiveEmailOrEmpty:
errorMessage: formEditor.formElementPropertyValidatorsDefinition.NaiveEmail.label
FormElementIdentifierWithinCurlyBracesInclusive:
errorMessage: formEditor.formElementPropertyValidatorsDefinition.FormElementIdentifierWithinCurlyBraces.label
FormElementIdentifierWithinCurlyBracesExclusive:
errorMessage: formEditor.formElementPropertyValidatorsDefinition.FormElementIdentifierWithinCurlyBraces.label
FileSize:
errorMessage: formEditor.formElementPropertyValidatorsDefinition.FileSize.label
RFC3339FullDate:
errorMessage: formEditor.formElementPropertyValidatorsDefinition.RFC3339FullDate.label
:aspect:`Related options`
- :ref:`"[TextEditor] propertyValidators"<typo3.cms.form.prototypes.\<prototypeidentifier>.formelementsdefinition.\<formelementtypeidentifier>.formeditor.editors.*.propertyvalidators-texteditor>`
- :ref:`"[Typo3WinBrowserEditor] propertyValidators"<typo3.cms.form.prototypes.\<prototypeidentifier>.formelementsdefinition.\<formelementtypeidentifier>.formeditor.editors.*.propertyvalidators-typo3winbrowsereditor>`
:aspect:`Good to know`
- :ref:`"Form editor"<concepts-formeditor>`
:aspect:`Description`
Some inspector editors are able to validate it's values through a JavaScript methods.
``formElementPropertyValidatorsDefinition`` define basic configurations for such JavaScript validators.
This JavaScript validators can be registered through ``getFormEditorApp().addPropertyValidationValidator()``. The first method argument is the identifier
for this validator. Every array key within ``formElementPropertyValidatorsDefinition`` must be equal to such a identifier.
.. _typo3.cms.form.prototypes.<prototypeidentifier>.formeditor.formelementpropertyvalidatorsdefinition.<formelementpropertyvalidatoridentifier>.errormessage:
formElementPropertyValidatorsDefinition.<formElementPropertyValidatorIdentifier>.errorMessage
---------------------------------------------------------------------------------------------
:aspect:`Option path`
TYPO3.CMS.Form.prototypes.<prototypeIdentifier>.formeditor.formElementPropertyValidatorsDefinition.<formElementPropertyValidatorIdentifier>.errorMessage
:aspect:`Data type`
string
:aspect:`Needed by`
Backend (form editor)
:aspect:`Mandatory`
Yes
:aspect:`Default value (prototype 'standard')`
.. code-block:: yaml
:linenos:
:emphasize-lines: 4, 6, 8, 10, 12, 14
formEditor:
formElementPropertyValidatorsDefinition:
NotEmpty:
errorMessage: formEditor.formElementPropertyValidatorsDefinition.NotEmpty.label
Integer:
errorMessage: formEditor.formElementPropertyValidatorsDefinition.Integer.label
NaiveEmail:
errorMessage: formEditor.formElementPropertyValidatorsDefinition.NaiveEmail.label
NaiveEmailOrEmpty:
errorMessage: formEditor.formElementPropertyValidatorsDefinition.NaiveEmail.label
FormElementIdentifierWithinCurlyBracesInclusive:
errorMessage: formEditor.formElementPropertyValidatorsDefinition.FormElementIdentifierWithinCurlyBraces.label
FormElementIdentifierWithinCurlyBracesExclusive:
errorMessage: formEditor.formElementPropertyValidatorsDefinition.FormElementIdentifierWithinCurlyBraces.label
FileSize:
errorMessage: formEditor.formElementPropertyValidatorsDefinition.FileSize.label
RFC3339FullDate:
errorMessage: formEditor.formElementPropertyValidatorsDefinition.RFC3339FullDate.label
:aspect:`Related options`
- :ref:`"[TextEditor] propertyValidators"<typo3.cms.form.prototypes.\<prototypeidentifier>.formelementsdefinition.\<formelementtypeidentifier>.formeditor.editors.*.propertyvalidators-texteditor>`
- :ref:`"[Typo3WinBrowserEditor] propertyValidators"<typo3.cms.form.prototypes.\<prototypeidentifier>.formelementsdefinition.\<formelementtypeidentifier>.formeditor.editors.*.propertyvalidators-typo3winbrowsereditor>`
:aspect:`Good to know`
- :ref:`"Form editor"<concepts-formeditor>`
:aspect:`Description`
The error message for a inspector editor property validator which is shown if the validation fails.
.. _typo3.cms.form.prototypes.<prototypeidentifier>.formeditor.formelementgroups:
formElementGroups
-----------------
:aspect:`Option path`
TYPO3.CMS.Form.prototypes.<prototypeIdentifier>.formeditor.formElementGroups
:aspect:`Data type`
array
:aspect:`Needed by`
Backend (form editor)
:aspect:`Mandatory`
Yes
:aspect:`Default value (prototype 'standard')`
.. code-block:: yaml
:linenos:
:emphasize-lines: 2-
formEditor:
formElementGroups:
input:
label: formEditor.formElementGroups.input.label
html5:
label: 'formEditor.formElementGroups.html5.label'
select:
label: formEditor.formElementGroups.select.label
custom:
label: formEditor.formElementGroups.custom.label
container:
label: formEditor.formElementGroups.container.label
page:
label: formEditor.formElementGroups.page.label
:aspect:`Related options`
- :ref:`"TYPO3.CMS.Form.prototypes.\<prototypeIdentifier>.formElementsDefinition.AdvancedPassword.formEditor.group"<typo3.cms.form.prototypes.\<prototypeIdentifier>.formelementsdefinition.advancedpassword.formeditor.group>`
- :ref:`"TYPO3.CMS.Form.prototypes.\<prototypeIdentifier>.formElementsDefinition.Checkbox.formEditor.group"<typo3.cms.form.prototypes.\<prototypeIdentifier>.formelementsdefinition.checkbox.formeditor.group>`
- :ref:`"TYPO3.CMS.Form.prototypes.\<prototypeIdentifier>.formElementsDefinition.ContentElement.formEditor.group"<typo3.cms.form.prototypes.\<prototypeIdentifier>.formelementsdefinition.contentelement.formeditor.group>`
- :ref:`"TYPO3.CMS.Form.prototypes.\<prototypeIdentifier>.formElementsDefinition.Date.formEditor.group"<typo3.cms.form.prototypes.\<prototypeIdentifier>.formelementsdefinition.date.formeditor.group>`
- :ref:`"TYPO3.CMS.Form.prototypes.\<prototypeIdentifier>.formElementsDefinition.DatePicker.formEditor.group"<typo3.cms.form.prototypes.\<prototypeIdentifier>.formelementsdefinition.datepicker.formeditor.group>`
- :ref:`"TYPO3.CMS.Form.prototypes.\<prototypeIdentifier>.formElementsDefinition.Email.formEditor.group"<typo3.cms.form.prototypes.\<prototypeIdentifier>.formelementsdefinition.email.formeditor.group>`
- :ref:`"TYPO3.CMS.Form.prototypes.\<prototypeIdentifier>.formElementsDefinition.Fieldset.formEditor.group"<typo3.cms.form.prototypes.\<prototypeIdentifier>.formelementsdefinition.fieldset.formeditor.group>`
- :ref:`"TYPO3.CMS.Form.prototypes.\<prototypeIdentifier>.formElementsDefinition.FileUpload.formEditor.group"<typo3.cms.form.prototypes.\<prototypeIdentifier>.formelementsdefinition.fileupload.formeditor.group>`
- :ref:`"TYPO3.CMS.Form.prototypes.\<prototypeIdentifier>.formElementsDefinition.GridRow.formEditor.group"<typo3.cms.form.prototypes.\<prototypeIdentifier>.formelementsdefinition.gridrow.formeditor.group>`
- :ref:`"TYPO3.CMS.Form.prototypes.\<prototypeIdentifier>.formElementsDefinition.Hidden.formEditor.group"<typo3.cms.form.prototypes.\<prototypeIdentifier>.formelementsdefinition.hidden.formeditor.group>`
- :ref:`"TYPO3.CMS.Form.prototypes.\<prototypeIdentifier>.formElementsDefinition.ImageUpload.formEditor.group"<typo3.cms.form.prototypes.\<prototypeIdentifier>.formelementsdefinition.imageupload.formeditor.group>`
- :ref:`"TYPO3.CMS.Form.prototypes.\<prototypeIdentifier>.formElementsDefinition.MultiCheckbox.formEditor.group"<typo3.cms.form.prototypes.\<prototypeIdentifier>.formelementsdefinition.multicheckbox.formeditor.group>`
- :ref:`"TYPO3.CMS.Form.prototypes.\<prototypeIdentifier>.formElementsDefinition.MultiSelect.formEditor.group"<typo3.cms.form.prototypes.\<prototypeIdentifier>.formelementsdefinition.multiselect.formeditor.group>`
- :ref:`"TYPO3.CMS.Form.prototypes.\<prototypeIdentifier>.formElementsDefinition.Number.formEditor.group"<typo3.cms.form.prototypes.\<prototypeIdentifier>.formelementsdefinition.number.formeditor.group>`
- :ref:`"TYPO3.CMS.Form.prototypes.\<prototypeIdentifier>.formElementsDefinition.Page.formEditor.group"<typo3.cms.form.prototypes.\<prototypeIdentifier>.formelementsdefinition.page.formeditor.group>`
- :ref:`"TYPO3.CMS.Form.prototypes.\<prototypeIdentifier>.formElementsDefinition.Password.formEditor.group"<typo3.cms.form.prototypes.\<prototypeIdentifier>.formelementsdefinition.password.formeditor.group>`
- :ref:`"TYPO3.CMS.Form.prototypes.\<prototypeIdentifier>.formElementsDefinition.RadioButton.formEditor.group"<typo3.cms.form.prototypes.\<prototypeIdentifier>.formelementsdefinition.radiobutton.formeditor.group>`
- :ref:`"TYPO3.CMS.Form.prototypes.\<prototypeIdentifier>.formElementsDefinition.SingleSelect.formEditor.group"<typo3.cms.form.prototypes.\<prototypeIdentifier>.formelementsdefinition.singleselect.formeditor.group>`
- :ref:`"TYPO3.CMS.Form.prototypes.\<prototypeIdentifier>.formElementsDefinition.StaticText.formEditor.group"<typo3.cms.form.prototypes.\<prototypeIdentifier>.formelementsdefinition.statictext.formeditor.group>`
- :ref:`"TYPO3.CMS.Form.prototypes.\<prototypeIdentifier>.formElementsDefinition.SummaryPage.formEditor.group"<typo3.cms.form.prototypes.\<prototypeIdentifier>.formelementsdefinition.summarypage.formeditor.group>`
- :ref:`"TYPO3.CMS.Form.prototypes.\<prototypeIdentifier>.formElementsDefinition.Telephone.formEditor.group"<typo3.cms.form.prototypes.\<prototypeIdentifier>.formelementsdefinition.telephone.formeditor.group>`
- :ref:`"TYPO3.CMS.Form.prototypes.\<prototypeIdentifier>.formElementsDefinition.Text.formEditor.group"<typo3.cms.form.prototypes.\<prototypeIdentifier>.formelementsdefinition.text.formeditor.group>`
- :ref:`"TYPO3.CMS.Form.prototypes.\<prototypeIdentifier>.formElementsDefinition.Textarea.formEditor.group"<typo3.cms.form.prototypes.\<prototypeIdentifier>.formelementsdefinition.textarea.formeditor.group>`
- :ref:`"TYPO3.CMS.Form.prototypes.\<prototypeIdentifier>.formElementsDefinition.Url.formEditor.group"<typo3.cms.form.prototypes.\<prototypeIdentifier>.formelementsdefinition.url.formeditor.group>`
:aspect:`Good to know`
- :ref:`"Form editor"<concepts-formeditor>`
:aspect:`Description`
Every form element can be placed within a group within the ``form editor`` "new Element" modal.
Every form element which should be shown within such a group, must have a ``group`` property. The form element ``group`` property value
must be equal to an array key within ``formElementGroups``.
.. _typo3.cms.form.prototypes.<prototypeidentifier>.formeditor.formelementgroups.<formelementgroupidentifier>.label:
formElementGroups.<formElementGroupIdentifier>.label
----------------------------------------------------
:aspect:`Option path`
TYPO3.CMS.Form.prototypes.<prototypeIdentifier>.formeditor.formElementGroups.<formElementGroupIdentifier>.label
:aspect:`Data type`
string
:aspect:`Needed by`
Backend (form editor)
:aspect:`Mandatory`
Yes
:aspect:`Default value (prototype 'standard')`
.. code-block:: yaml
:linenos:
:emphasize-lines: 4, 6, 8, 10, 12
formEditor:
formElementGroups:
input:
label: formEditor.formElementGroups.input.label
select:
label: formEditor.formElementGroups.select.label
custom:
label: formEditor.formElementGroups.custom.label
container:
label: formEditor.formElementGroups.container.label
page:
label: formEditor.formElementGroups.page.label
:aspect:`Good to know`
- :ref:`"Form editor"<concepts-formeditor>`
:aspect:`Description`
The label for a group within the ``form editor`` "new Element" modal.
@@ -0,0 +1,835 @@
.. include:: ../../../Includes.txt
.. _typo3.cms.form.prototypes.<prototypeIdentifier>.formelementsdefinition:
========================
[formElementsDefinition]
========================
.. _typo3.cms.form.prototypes.<prototypeIdentifier>.formelementsdefinition-properties:
Properties
==========
.. _typo3.cms.form.prototypes.<prototypeIdentifier>.formelementsdefinition.*:
[formElementsDefinition]
------------------------
:aspect:`Option path`
TYPO3.CMS.Form.prototypes.<prototypeIdentifier>.formElementsDefinition
:aspect:`Data type`
array
:aspect:`Needed by`
Frontend/ Backend (form editor)
:aspect:`Mandatory`
Yes
:aspect:`Default value`
.. code-block:: yaml
:linenos:
prototypes:
<prototypeIdentifier>:
formElementsDefinition:
[...]
:aspect:`Good to know`
- :ref:`"Custom form element implementations"<concepts-frontendrendering-codecomponents-customformelementimplementations>`
:aspect:`Description`
Array which defines the available form elements. Every key within this array is called the ``<formElementTypeIdentifier>``.
.. _typo3.cms.form.prototypes.<prototypeIdentifier>.formelementsdefinition.<formelementtypeidentifier>:
<formElementTypeIdentifier>
---------------------------
:aspect:`Option path`
TYPO3.CMS.Form.prototypes.<prototypeIdentifier>.formElementsDefinition.<formElementTypeIdentifier>
:aspect:`Data type`
string
:aspect:`Needed by`
Frontend/ Backend (form editor)
:aspect:`Mandatory`
Yes
:aspect:`Default value (for prototype 'standard')`
.. code-block:: yaml
:linenos:
prototypes:
standard:
Form:
[...]
Page:
[...]
SummaryPage:
[...]
Fieldset:
[...]
GridContainer:
[...]
GridRow:
[...]
Text:
[...]
Password:
[...]
AdvancedPassword:
[...]
Textarea:
[...]
Honeypot:
[...]
Hidden:
[...]
Email:
[...]
Telephone:
[...]
Url:
[...]
Number:
[...]
Date:
[...]
Checkbox:
[...]
MultiCheckbox:
[...]
MultiSelect:
[...]
RadioButton:
[...]
SingleSelect:
[...]
DatePicker:
[...]
StaticText:
[...]
ContentElement:
[...]
FileUpload:
[...]
ImageUpload:
[...]
:aspect:`Good to know`
- :ref:`"Custom form element implementations"<concepts-frontendrendering-codecomponents-customformelementimplementations>`
:aspect:`Description`
This array key identifies a form element. This identifier could be used to attach a form element to a form.
.. _typo3.cms.form.prototypes.<prototypeidentifier>.formelementsdefinition.<formelementtypeidentifier>-commonproperties:
Common <formElementTypeIdentifier> properties
=============================================
.. _typo3.cms.form.prototypes.<prototypeIdentifier>.formelementsdefinition.<formelementtypeidentifier>.defaultValue:
defaultValue
------------
:aspect:`Option path`
TYPO3.CMS.Form.prototypes.<prototypeIdentifier>.formElementsDefinition.<formElementTypeIdentifier>.defaultValue
:aspect:`Data type`
string/ array
:aspect:`Needed by`
Frontend/ Backend (form editor)
:aspect:`Mandatory`
No
:aspect:`Default value`
undefined
:aspect:`Description`
If set this string/ array will be used as default value of the form
element. Array is in place for multi value elements (e.g. the
``MultiSelect`` form element).
.. _typo3.cms.form.prototypes.<prototypeIdentifier>.formelementsdefinition.<formelementtypeidentifier>.implementationclassname:
implementationClassName
-----------------------
:aspect:`Option path`
TYPO3.CMS.Form.prototypes.<prototypeIdentifier>.formElementsDefinition.<formElementTypeIdentifier>.implementationClassName
:aspect:`Data type`
string
:aspect:`Needed by`
Frontend/ Backend (form editor)
:aspect:`Mandatory`
Yes
:aspect:`Default value`
Depends (see :ref:`concrete element configuration <typo3.cms.form.prototypes.\<prototypeidentifier>.formelementsdefinition.\<formelementtypeidentifier>-concreteconfigurations>`)
:aspect:`Good to know`
- :ref:`"Custom form element implementations"<concepts-frontendrendering-codecomponents-customformelementimplementations>`
:aspect:`Description`
Classname which implements the form element.
.. _typo3.cms.form.prototypes.<prototypeIdentifier>.formelementsdefinition.<formelementtypeidentifier>.renderingoptions.translation.translationfile:
renderingOptions.translation.translationFile
--------------------------------------------
:aspect:`Option path`
TYPO3.CMS.Form.prototypes.<prototypeIdentifier>.formElementsDefinition.<formElementTypeIdentifier>.renderingOptions.translation.translationFile
:aspect:`Data type`
string/ array
:aspect:`Needed by`
Frontend/ Backend (form editor)
:aspect:`Mandatory`
No
:aspect:`Default value`
Depends (see :ref:`concrete element configuration <typo3.cms.form.prototypes.\<prototypeidentifier>.formelementsdefinition.\<formelementtypeidentifier>-concreteconfigurations>`)
:aspect:`Good to know`
- :ref:`"Custom form element implementations"<concepts-frontendrendering-codecomponents-customformelementimplementations>`
- :ref:`"Translate form definition"<concepts-frontendrendering-translation-formdefinition>`
:aspect:`Description`
Filesystem path(s) to translation files which should be searched for form element property translations.
If ``translationFile`` is undefined, - :ref:`"TYPO3.CMS.Form.prototypes.\<prototypeIdentifier>.formElementsDefinition.Form.renderingOptions.translation.translationFile"<typo3.cms.form.prototypes.\<prototypeIdentifier>.formelementsdefinition.form.renderingoptions.translation.translationfile>` will be used.
.. _typo3.cms.form.prototypes.<prototypeIdentifier>.formelementsdefinition.<formelementtypeidentifier>.renderingOptions.translation.translatePropertyValueIfEmpty:
renderingOptions.translation.translatePropertyValueIfEmpty
----------------------------------------------------------
:aspect:`Option path`
TYPO3.CMS.Form.prototypes.<prototypeIdentifier>.formElementsDefinition.<formElementTypeIdentifier>.renderingoptions.translation.translatepropertyvalueifempty
:aspect:`Data type`
bool
:aspect:`Needed by`
Frontend/ Backend (form editor)
:aspect:`Mandatory`
No
:aspect:`Default value`
true
:aspect:`Good to know`
- :ref:`"Custom form element implementations"<concepts-frontendrendering-codecomponents-customformelementimplementations>`
- :ref:`"Translate form definition"<concepts-frontendrendering-translation-formdefinition>`
:aspect:`Description`
If set to ``false``, the form element property translation will be skipped if the form element property value is empty.
.. _typo3.cms.form.prototypes.<prototypeIdentifier>.formelementsdefinition.<formelementtypeidentifier>.renderingoptions.templatename:
renderingOptions.templateName
-----------------------------
:aspect:`Option path`
TYPO3.CMS.Form.prototypes.<prototypeIdentifier>.formElementsDefinition.<formElementTypeIdentifier>.renderingOptions.templateName
:aspect:`Data type`
string
:aspect:`Needed by`
Frontend/ Backend (form editor)
:aspect:`Mandatory`
(see :ref:`concrete element configuration <typo3.cms.form.prototypes.\<prototypeidentifier>.formelementsdefinition.\<formelementtypeidentifier>-concreteconfigurations>`)
:aspect:`Default value`
undefined
:aspect:`Good to know`
- :ref:`"Custom form element implementations"<concepts-frontendrendering-codecomponents-customformelementimplementations>`
- :ref:`"templateName"<apireference-frontendrendering-fluidformrenderer-options-templatename>`
:aspect:`Description`
Set ``templateName`` to define a custom template name which should be used instead of the ``<formElementTypeIdentifier>``.
.. _typo3.cms.form.prototypes.<prototypeIdentifier>.formelementsdefinition.<formelementtypeidentifier>.properties:
properties
----------
:aspect:`Option path`
TYPO3.CMS.Form.prototypes.<prototypeIdentifier>.formElementsDefinition.<formElementTypeIdentifier>.properties
:aspect:`Data type`
array
:aspect:`Needed by`
Frontend/ Backend (form editor)
:aspect:`Mandatory`
No
:aspect:`Default value`
Depends (see :ref:`concrete element configuration <typo3.cms.form.prototypes.\<prototypeidentifier>.formelementsdefinition.\<formelementtypeidentifier>-concreteconfigurations>`)
:aspect:`Good to know`
- :ref:`"Custom form element implementations"<concepts-frontendrendering-codecomponents-customformelementimplementations>`
- :ref:`"Translate form definition"<concepts-frontendrendering-translation-formdefinition>`
:aspect:`Description`
Array with form element specific properties.
.. _typo3.cms.form.prototypes.<prototypeIdentifier>.formelementsdefinition.<formelementtypeidentifier>.properties.elementDescription:
properties.elementDescription
-----------------------------
:aspect:`Option path`
TYPO3.CMS.Form.prototypes.<prototypeIdentifier>.formElementsDefinition.<formElementTypeIdentifier>.properties.elementDescription
:aspect:`Data type`
string
:aspect:`Needed by`
Frontend/ Backend (form editor)
:aspect:`Mandatory`
No
:aspect:`Default value`
Undefined
:aspect:`Good to know`
- :ref:`"Custom form element implementations"<concepts-frontendrendering-codecomponents-customformelementimplementations>`
- :ref:`"Translate form definition"<concepts-frontendrendering-translation-formdefinition>`
:aspect:`Description`
Set a description of the form element. By default, it is displayed
below the form element.
.. _typo3.cms.form.prototypes.<prototypeIdentifier>.formelementsdefinition.<formelementtypeidentifier>.properties.fluidadditionalattributes:
properties.fluidAdditionalAttributes
------------------------------------
:aspect:`Option path`
TYPO3.CMS.Form.prototypes.<prototypeIdentifier>.formElementsDefinition.<formElementTypeIdentifier>.properties.fluidAdditionalAttributes
:aspect:`Data type`
array
:aspect:`Needed by`
Frontend/ Backend (form editor)
:aspect:`Mandatory`
No
:aspect:`Default value`
Depends (see :ref:`concrete element configuration <typo3.cms.form.prototypes.\<prototypeidentifier>.formelementsdefinition.\<formelementtypeidentifier>-concreteconfigurations>`)
:aspect:`Good to know`
- :ref:`"Custom form element implementations"<concepts-frontendrendering-codecomponents-customformelementimplementations>`
- :ref:`"Translate form definition"<concepts-frontendrendering-translation-formdefinition>`
:aspect:`Description`
The values within this array goes directely into the fluid form element viewhelpers property ``additionalAttributes``.
.. _typo3.cms.form.prototypes.<prototypeIdentifier>.formelementsdefinition.<formelementtypeidentifier>.properties.gridcolumnclassautoconfiguration:
properties.gridColumnClassAutoConfiguration
-------------------------------------------
:aspect:`Option path`
TYPO3.CMS.Form.prototypes.<prototypeIdentifier>.formElementsDefinition.<formElementTypeIdentifier>.properties.gridColumnClassAutoConfiguration
:aspect:`Data type`
array
:aspect:`Needed by`
Frontend/ Backend (form editor)
:aspect:`Mandatory`
No
:aspect:`Default value`
Undefined
:aspect:`Related options`
- :ref:`"GridRow viewPorts"<typo3.cms.form.prototypes.\<prototypeIdentifier>.formelementsdefinition.gridrow.properties.gridcolumnclassautoconfiguration.viewports>`
:aspect:`Description`
If the form element lies within a GridRow you can define the number of columns which the form element should occupy.
Each ``viewPorts`` configuration key has to match with on ofe the defined viewports within ``TYPO3.CMS.Form.prototypes.<prototypeIdentifier>.formElementsDefinition.GridRow.properties.gridColumnClassAutoConfiguration.viewPorts``
.. code-block:: yaml
:linenos:
gridColumnClassAutoConfiguration:
viewPorts:
lg:
numbersOfColumnsToUse: '2'
md:
numbersOfColumnsToUse: '3'
sm:
numbersOfColumnsToUse: '4'
xs:
numbersOfColumnsToUse: '5'
.. _typo3.cms.form.prototypes.<prototypeIdentifier>.formelementsdefinition.<formelementtypeidentifier>.label:
label
-----
:aspect:`Option path`
TYPO3.CMS.Form.prototypes.<prototypeIdentifier>.formElementsDefinition.<formElementTypeIdentifier>.label
:aspect:`Data type`
string
:aspect:`Needed by`
Frontend/ Backend (form editor)
:aspect:`Mandatory`
No
:aspect:`Default value`
Depends (see :ref:`concrete element configuration <typo3.cms.form.prototypes.\<prototypeidentifier>.formelementsdefinition.\<formelementtypeidentifier>-concreteconfigurations>`)
:aspect:`Good to know`
- :ref:`"Custom form element implementations"<concepts-frontendrendering-codecomponents-customformelementimplementations>`
- :ref:`"Translate form definition"<concepts-frontendrendering-translation-formdefinition>`
:aspect:`Description`
The label of the form element.
.. _typo3.cms.form.prototypes.<prototypeIdentifier>.formelementsdefinition.<formelementtypeidentifier>.formeditor:
formEditor
----------
:aspect:`Option path`
TYPO3.CMS.Form.prototypes.<prototypeIdentifier>.formElementsDefinition.<formElementTypeIdentifier>.formEditor
:aspect:`Data type`
array
:aspect:`Needed by`
Backend (form editor)
:aspect:`Mandatory`
No (but recommended)
:aspect:`Default value`
Depends (see :ref:`concrete element configuration <typo3.cms.form.prototypes.\<prototypeidentifier>.formelementsdefinition.\<formelementtypeidentifier>-concreteconfigurations>`)
.. :aspect:`Good to know`
ToDo
:aspect:`Description`
Array with configurations for the ``form editor``
.. _typo3.cms.form.prototypes.<prototypeIdentifier>.formelementsdefinition.<formelementtypeidentifier>.formeditor.predefineddefaults:
formEditor.predefinedDefaults
-----------------------------
:aspect:`Option path`
TYPO3.CMS.Form.prototypes.<prototypeIdentifier>.formElementsDefinition.<formElementTypeIdentifier>.formEditor.predefinedDefaults
:aspect:`Data type`
array
:aspect:`Needed by`
Backend (form editor)
:aspect:`Mandatory`
Yes
:aspect:`Default value`
Depends (see :ref:`concrete element configuration <typo3.cms.form.prototypes.\<prototypeidentifier>.formelementsdefinition.\<formelementtypeidentifier>-concreteconfigurations>`)
:aspect:`Good to know`
- :ref:`"Translate form editor settings"<concepts-formeditor-translation-formeditor>`
:aspect:`Description`
Defines predefined defaults for form element properties which are prefilled, if the form element is added to a form.
.. _typo3.cms.form.prototypes.<prototypeIdentifier>.formelementsdefinition.<formelementtypeidentifier>.formeditor.propertycollections:
formEditor.propertyCollections
------------------------------
:aspect:`Option path`
TYPO3.CMS.Form.prototypes.<prototypeIdentifier>.formElementsDefinition.<formElementTypeIdentifier>.formEditor.propertyCollections
:aspect:`Data type`
array
:aspect:`Needed by`
Backend (form editor)
:aspect:`Mandatory`
No
:aspect:`Default value`
Depends (see :ref:`concrete element configuration <typo3.cms.form.prototypes.\<prototypeidentifier>.formelementsdefinition.\<formelementtypeidentifier>-concreteconfigurations>`)
:aspect:`Good to know`
- :ref:`"Inspector"<concepts-formeditor-inspector>`
:aspect:`Description`
Array with configurations for ``property collections`` for the form element.
.. _typo3.cms.form.prototypes.<prototypeIdentifier>.formelementsdefinition.<formelementtypeidentifier>.formeditor.propertycollections.validators:
formEditor.propertyCollections.validators
-----------------------------------------
:aspect:`Option path`
TYPO3.CMS.Form.prototypes.<prototypeIdentifier>.formElementsDefinition.<formElementTypeIdentifier>.formEditor.propertyCollections.validators
:aspect:`Data type`
array
:aspect:`Needed by`
Backend (form editor)
:aspect:`Mandatory`
No
:aspect:`Default value`
Depends (see :ref:`concrete element configuration <typo3.cms.form.prototypes.\<prototypeidentifier>.formelementsdefinition.\<formelementtypeidentifier>-concreteconfigurations>`)
:aspect:`Good to know`
- :ref:`"Inspector"<concepts-formeditor-inspector>`
:aspect:`Description`
Array with configurations for available validators for a form element.
.. _typo3.cms.form.prototypes.<prototypeIdentifier>.formelementsdefinition.<formelementtypeidentifier>.formeditor.propertycollections.validators.*.identifier:
formEditor.propertyCollections.validators.[*].identifier
--------------------------------------------------------
:aspect:`Option path`
TYPO3.CMS.Form.prototypes.<prototypeIdentifier>.formElementsDefinition.<formElementTypeIdentifier>.formEditor.propertyCollections.validators.[*].identifier
:aspect:`Data type`
string
:aspect:`Needed by`
Backend (form editor)
:aspect:`Mandatory`
Yes
:aspect:`Default value`
Depends (see :ref:`concrete element configuration <typo3.cms.form.prototypes.\<prototypeidentifier>.formelementsdefinition.\<formelementtypeidentifier>-concreteconfigurations>`)
:aspect:`Good to know`
- :ref:`"Inspector"<concepts-formeditor-inspector>`
- :ref:`"\<validatorIdentifier>"<typo3.cms.form.prototypes.\<prototypeidentifier>.validatorsdefinition.\<validatoridentifier>>`
:aspect:`Description`
Identifies the validator which should be attached to the form element. Must be equal to a existing ``<validatorIdentifier>``.
.. _typo3.cms.form.prototypes.<prototypeIdentifier>.formelementsdefinition.<formelementtypeidentifier>.formeditor.propertycollections.validators.*.editors:
formEditor.propertyCollections.validators.[*].editors
-----------------------------------------------------
:aspect:`Option path`
TYPO3.CMS.Form.prototypes.<prototypeIdentifier>.formElementsDefinition.<formElementTypeIdentifier>.formEditor.propertyCollections.validators.[*].editors
:aspect:`Data type`
string
:aspect:`Needed by`
Backend (form editor)
:aspect:`Mandatory`
Yes
:aspect:`Default value`
Depends (see :ref:`concrete element configuration <typo3.cms.form.prototypes.\<prototypeidentifier>.formelementsdefinition.\<formelementtypeidentifier>-concreteconfigurations>`)
:aspect:`Good to know`
- :ref:`"Inspector"<concepts-formeditor-inspector>`
:aspect:`Description`
Array with available ``inspector editors`` for this validator.
.. _typo3.cms.form.prototypes.<prototypeIdentifier>.formelementsdefinition.<formelementtypeidentifier>.formeditor.propertycollections.finishers:
formEditor.propertyCollections.finishers
----------------------------------------
:aspect:`Option path`
TYPO3.CMS.Form.prototypes.<prototypeIdentifier>.formElementsDefinition.<formElementTypeIdentifier>.formEditor.propertyCollections.finishers
:aspect:`Data type`
array
:aspect:`Needed by`
Backend (form editor)
:aspect:`Mandatory`
No
:aspect:`Default value`
Depends (see :ref:`concrete element configuration <typo3.cms.form.prototypes.\<prototypeidentifier>.formelementsdefinition.\<formelementtypeidentifier>-concreteconfigurations>`)
:aspect:`Good to know`
- :ref:`"Inspector"<concepts-formeditor-inspector>`
:aspect:`Description`
Array with configurations for available finisher for a form definition.
.. _typo3.cms.form.prototypes.<prototypeIdentifier>.formelementsdefinition.<formelementtypeidentifier>.formeditor.propertycollections.finishers.*.identifier:
formEditor.propertyCollections.finishers.[*].identifier
-------------------------------------------------------
:aspect:`Option path`
TYPO3.CMS.Form.prototypes.<prototypeIdentifier>.formElementsDefinition.<formElementTypeIdentifier>.formEditor.propertyCollections.finishers.[*].identifier
:aspect:`Data type`
string
:aspect:`Needed by`
Backend (form editor)
:aspect:`Mandatory`
No
:aspect:`Default value`
Depends (see :ref:`concrete element configuration <typo3.cms.form.prototypes.\<prototypeidentifier>.formelementsdefinition.\<formelementtypeidentifier>-concreteconfigurations>`)
:aspect:`Good to know`
- :ref:`"Inspector"<concepts-formeditor-inspector>`
- :ref:`"\<finisherIdentifier>"<typo3.cms.form.prototypes.\<prototypeidentifier>.finishersdefinition.\<finisheridentifier>>`
:aspect:`Description`
Identifies the finisher which should be attached to the form definition. Must be equal to a existing ``<finisherIdentifier>``.
.. _typo3.cms.form.prototypes.<prototypeIdentifier>.formelementsdefinition.<formelementtypeidentifier>.formeditor.propertycollections.finishers.*.editors:
formEditor.propertyCollections.finishers.[*].editors
----------------------------------------------------
:aspect:`Option path`
TYPO3.CMS.Form.prototypes.<prototypeIdentifier>.formElementsDefinition.<formElementTypeIdentifier>.formEditor.propertyCollections.finishers.[*].editors
:aspect:`Data type`
string
:aspect:`Needed by`
Backend (form editor)
:aspect:`Mandatory`
No
:aspect:`Default value`
Depends (see :ref:`concrete element configuration <typo3.cms.form.prototypes.\<prototypeidentifier>.formelementsdefinition.\<formelementtypeidentifier>-concreteconfigurations>`)
:aspect:`Good to know`
- :ref:`"Inspector"<concepts-formeditor-inspector>`
:aspect:`Description`
Array with available ``inspector editors`` for this finisher.
.. _typo3.cms.form.prototypes.<prototypeIdentifier>.formelementsdefinition.<formelementtypeidentifier>.formeditor.label:
formEditor.label
----------------
:aspect:`Option path`
TYPO3.CMS.Form.prototypes.<prototypeIdentifier>.formElementsDefinition.<formElementTypeIdentifier>.formEditor.label
:aspect:`Data type`
string
:aspect:`Needed by`
Backend (form editor)
:aspect:`Mandatory`
Yes
:aspect:`Default value`
Depends (see :ref:`concrete element configuration <typo3.cms.form.prototypes.\<prototypeidentifier>.formelementsdefinition.\<formelementtypeidentifier>-concreteconfigurations>`)
:aspect:`Good to know`
- :ref:`"Translate form editor settings"<concepts-formeditor-translation-formeditor>`
:aspect:`Description`
This label will be shown within the "new element" Modal.
.. _typo3.cms.form.prototypes.<prototypeIdentifier>.formelementsdefinition.<formelementtypeidentifier>.formeditor.group:
formEditor.group
----------------
:aspect:`Option path`
TYPO3.CMS.Form.prototypes.<prototypeIdentifier>.formElementsDefinition.<formElementTypeIdentifier>.formEditor.group
:aspect:`Data type`
string
:aspect:`Needed by`
Backend (form editor)
:aspect:`Mandatory`
No
:aspect:`Related options`
- :ref:`TYPO3.CMS.Form.prototypes.\<prototypeIdentifier>.formEditor.formElementGroups <typo3.cms.form.prototypes.\<prototypeidentifier>.formeditor.formelementgroups>`
:aspect:`Default value`
Depends (see :ref:`concrete element configuration <typo3.cms.form.prototypes.\<prototypeidentifier>.formelementsdefinition.\<formelementtypeidentifier>-concreteconfigurations>`)
:aspect:`Description`
Define within which group within the ``form editor`` "new Element" modal the form element should be shown.
The ``group`` value must be equal to an array key within ``formElementGroups``.
.. _typo3.cms.form.prototypes.<prototypeIdentifier>.formelementsdefinition.<formelementtypeidentifier>.formeditor.groupsorting:
formEditor.groupSorting
-----------------------
:aspect:`Option path`
TYPO3.CMS.Form.prototypes.<prototypeIdentifier>.formElementsDefinition.<formElementTypeIdentifier>.formEditor.groupSorting
:aspect:`Data type`
int
:aspect:`Needed by`
Backend (form editor)
:aspect:`Mandatory`
No
:aspect:`Default value`
Depends (see :ref:`concrete element configuration <typo3.cms.form.prototypes.\<prototypeidentifier>.formelementsdefinition.\<formelementtypeidentifier>-concreteconfigurations>`)
.. :aspect:`Good to know`
ToDo
:aspect:`Description`
The position within the ``formEditor.group`` for this form element.
.. _typo3.cms.form.prototypes.<prototypeIdentifier>.formelementsdefinition.<formelementtypeidentifier>.formeditor.iconidentifier:
formEditor.iconIdentifier
-------------------------
:aspect:`Option path`
TYPO3.CMS.Form.prototypes.<prototypeIdentifier>.formElementsDefinition.<formElementTypeIdentifier>.formEditor.iconIdentifier
:aspect:`Data type`
string
:aspect:`Needed by`
Backend (form editor)
:aspect:`Mandatory`
Yes
:aspect:`Default value`
Depends (see :ref:`concrete element configuration <typo3.cms.form.prototypes.\<prototypeidentifier>.formelementsdefinition.\<formelementtypeidentifier>-concreteconfigurations>`)
.. :aspect:`Good to know`
ToDo
:aspect:`Description`
An icon identifier which must be registered through the ``\TYPO3\CMS\Core\Imaging\IconRegistry``.
This icon will be shown within
- :ref:`"Inspector [FormElementHeaderEditor]"<typo3.cms.form.prototypes.\<prototypeidentifier>.formelementsdefinition.\<formelementtypeidentifier>.formeditor.editors.*.formelementheadereditor>`.
- :ref:`"Abstract view formelement templates"<apireference-formeditor-stage-commonabstractformelementtemplates>`.
- ``Tree`` component.
- "new element" Modal
.. _typo3.cms.form.prototypes.<prototypeidentifier>.formelementsdefinition.<formelementtypeidentifier>.formEditor.editors-tree:
formEditor.editors
------------------
.. toctree::
formEditor/Index
.. _typo3.cms.form.prototypes.<prototypeidentifier>.formelementsdefinition.<formelementtypeidentifier>-concreteconfigurations:
Concrete configurations
=======================
.. toctree::
formElementTypes/AdvancedPassword
formElementTypes/Checkbox
formElementTypes/Date
formElementTypes/ContentElement
formElementTypes/DatePicker
formElementTypes/Email
formElementTypes/Fieldset
formElementTypes/FileUpload
formElementTypes/Form
formElementTypes/GridContainer
formElementTypes/GridRow
formElementTypes/Hidden
formElementTypes/Honeypot
formElementTypes/ImageUpload
formElementTypes/MultiCheckbox
formElementTypes/MultiSelect
formElementTypes/Number
formElementTypes/Page
formElementTypes/Password
formElementTypes/RadioButton
formElementTypes/SingleSelect
formElementTypes/StaticText
formElementTypes/SummaryPage
formElementTypes/Telephone
formElementTypes/Text
formElementTypes/Textarea
formElementTypes/Url
@@ -0,0 +1,111 @@
.. include:: ../../../../Includes.txt
.. _typo3.cms.form.prototypes.<prototypeidentifier>.formelementsdefinition.<formelementtypeidentifier>.formeditor.editors.*:
==================================================
[<formElementTypeIdentifier>][formEditor][editors]
==================================================
.. _typo3.cms.form.prototypes.<prototypeidentifier>.formelementsdefinition.<formelementtypeidentifier>.formeditor.editors-properties:
Properties
==========
.. _typo3.cms.form.prototypes.<prototypeidentifier>.formelementsdefinition.<formelementtypeidentifier>.formeditor.editors:
<formElementTypeIdentifier>.formEditor.editors
----------------------------------------------
:aspect:`Option path`
TYPO3.CMS.Form.prototypes.<prototypeidentifier>.formElementsDefinition.<formElementTypeIdentifier>.formEditor.editors
:aspect:`Data type`
array
:aspect:`Needed by`
Backend (form editor)
:aspect:`Mandatory`
Depends (see :ref:`concrete element configuration <typo3.cms.form.prototypes.\<prototypeidentifier>.formelementsdefinition.\<formelementtypeidentifier>-concreteconfigurations>`)
:aspect:`Default value`
Depends (see :ref:`concrete element configuration <typo3.cms.form.prototypes.\<prototypeidentifier>.formelementsdefinition.\<formelementtypeidentifier>-concreteconfigurations>`)
:aspect:`Good to know`
- :ref:`"Inspector"<concepts-formeditor-inspector>`
:aspect:`Description`
Array with numerical keys. Each arrayitem describes an ``inspector editor`` which is used to write values into a form element property.
.. _typo3.cms.form.prototypes.<prototypeidentifier>.formelementsdefinition.<formelementtypeidentifier>.formeditor.editors.*-commonproperties:
Common [<formElementTypeIdentifier>][formEditor][editors][*] properties
=======================================================================
.. _typo3.cms.form.prototypes.<prototypeidentifier>.formelementsdefinition.<formelementtypeidentifier>.formeditor.editors.*.identifier:
.. include:: inspectorEditors/properties/Identifier.rst
.. _typo3.cms.form.prototypes.<prototypeidentifier>.formelementsdefinition.<formelementtypeidentifier>.formeditor.editors.*.templatename:
templateName
------------
:aspect:`Option path`
TYPO3.CMS.Form.prototypes.<prototypeIdentifier>.formElementsDefinition.<formElementTypeIdentifier>.formEditor.editors.*.templateName
:aspect:`Data type`
string
:aspect:`Needed by`
Backend (form editor)
:aspect:`Mandatory`
Yes
:aspect:`Related options`
- :ref:`TYPO3.CMS.Form.prototypes.\<prototypeIdentifier>.formEditor.formEditorPartials <typo3.cms.form.prototypes.\<prototypeidentifier>.formeditor.formeditorpartials>`
:aspect:`Default value`
Depends (see :ref:`concrete element configuration <typo3.cms.form.prototypes.\<prototypeidentifier>.formelementsdefinition.\<formelementtypeidentifier>-concreteconfigurations>`)
:aspect:`Good to know`
- :ref:`"Inspector"<concepts-formeditor-inspector>`
:aspect:`Description`
.. include:: inspectorEditors/properties/TemplateName.rst
.. _typo3.cms.form.prototypes.<prototypeidentifier>.formelementsdefinition.<formelementtypeidentifier>.formeditor.editors.*.label:
.. include:: inspectorEditors/properties/Label.rst
.. _typo3.cms.form.prototypes.<prototypeidentifier>.formelementsdefinition.<formelementtypeidentifier>.formeditor.editors.*.propertypath:
.. include:: inspectorEditors/properties/PropertyPath.rst
.. _typo3.cms.form.prototypes.<prototypeidentifier>.formelementsdefinition.<formelementtypeidentifier>.formEditor.editors-availableinspectoreditors:
available inspector editors
---------------------------
.. toctree::
inspectorEditors/CheckboxEditor
inspectorEditors/CollectionElementHeaderEditor
inspectorEditors/FinishersEditor
inspectorEditors/FormElementHeaderEditor
inspectorEditors/GridColumnViewPortConfigurationEditor
inspectorEditors/MultiSelectEditor
inspectorEditors/PropertyGridEditor
inspectorEditors/RemoveElementEditor
inspectorEditors/RequiredValidatorEditor
inspectorEditors/SingleSelectEditor
inspectorEditors/TextareaEditor
inspectorEditors/TextEditor
inspectorEditors/Typo3WinBrowserEditor
inspectorEditors/ValidatorsEditor
inspectorEditors/ValidationErrorMessageEditor
@@ -0,0 +1,60 @@
.. include:: ../../../../../Includes.txt
.. _typo3.cms.form.prototypes.<prototypeidentifier>.formelementsdefinition.<formelementtypeidentifier>.formeditor.editors.*.checkboxeditor:
================
[CheckboxEditor]
================
.. _typo3.cms.form.prototypes.<prototypeidentifier>.formelementsdefinition.<formelementtypeidentifier>.formeditor.editors.*.checkboxeditor-introduction:
Introduction
============
Shows a checkbox which write 'true' or 'false' within the form definition for a form element property.
.. _typo3.cms.form.prototypes.<prototypeidentifier>.formelementsdefinition.<formelementtypeidentifier>.formeditor.editors.*.checkboxeditor-properties:
Properties
==========
.. _typo3.cms.form.prototypes.<prototypeidentifier>.formelementsdefinition.<formelementtypeidentifier>.formeditor.editors.*.templatename-checkboxeditor:
templateName
------------
:aspect:`Data type`
string
:aspect:`Needed by`
Backend (form editor)
:aspect:`Mandatory`
Yes
:aspect:`Related options`
- :ref:`TYPO3.CMS.Form.prototypes.\<prototypeIdentifier>.formEditor.formEditorPartials <typo3.cms.form.prototypes.\<prototypeidentifier>.formeditor.formeditorpartials>`
:aspect:`value`
Inspector-CheckboxEditor
:aspect:`Good to know`
- :ref:`"Inspector"<concepts-formeditor-inspector>`
:aspect:`Description`
.. include:: properties/TemplateName.rst
.. _typo3.cms.form.prototypes.<prototypeidentifier>.formelementsdefinition.<formelementtypeidentifier>.formeditor.editors.*.identifier-checkboxeditor:
.. include:: properties/Identifier.rst
.. _typo3.cms.form.prototypes.<prototypeidentifier>.formelementsdefinition.<formelementtypeidentifier>.formeditor.editors.*.label-checkboxeditor:
.. include:: properties/Label.rst
.. _typo3.cms.form.prototypes.<prototypeidentifier>.formelementsdefinition.<formelementtypeidentifier>.formeditor.editors.*.propertypath-checkboxeditor:
.. include:: properties/PropertyPath.rst
@@ -0,0 +1,57 @@
.. include:: ../../../../../Includes.txt
.. _typo3.cms.form.prototypes.<prototypeidentifier>.formelementsdefinition.<formelementtypeidentifier>.formeditor.editors.*.collectionelementheadereditor:
===============================
[CollectionElementHeaderEditor]
===============================
.. _typo3.cms.form.prototypes.<prototypeidentifier>.formelementsdefinition.<formelementtypeidentifier>.formeditor.editors.*.collectionelementheadereditor-introduction:
Introduction
============
This is not really an editor because this editor don't write values into the form definition.
This editor show the header area for collection elements (finishers/ validators) with it's icon and label.
.. _typo3.cms.form.prototypes.<prototypeidentifier>.formelementsdefinition.<formelementtypeidentifier>.formeditor.editors.*.collectionelementheadereditor-properties:
Properties
==========
.. _typo3.cms.form.prototypes.<prototypeidentifier>.formelementsdefinition.<formelementtypeidentifier>.formeditor.editors.*.templateName-collectionelementheadereditor:
templateName
------------
:aspect:`Data type`
string
:aspect:`Needed by`
Backend (form editor)
:aspect:`Mandatory`
Yes
:aspect:`Related options`
- :ref:`TYPO3.CMS.Form.prototypes.\<prototypeIdentifier>.formEditor.formEditorPartials <typo3.cms.form.prototypes.\<prototypeidentifier>.formeditor.formeditorpartials>`
:aspect:`value`
Inspector-CollectionElementHeaderEditor
:aspect:`Good to know`
- :ref:`"Inspector"<concepts-formeditor-inspector>`
:aspect:`Description`
.. include:: properties/TemplateName.rst
.. _typo3.cms.form.prototypes.<prototypeidentifier>.formelementsdefinition.<formelementtypeidentifier>.formeditor.editors.*.identifier-collectionelementheadereditor:
.. include:: properties/Identifier.rst
.. _typo3.cms.form.prototypes.<prototypeidentifier>.formelementsdefinition.<formelementtypeidentifier>.formeditor.editors.*.label-collectionelementheadereditor:
.. include:: properties/Label.rst
@@ -0,0 +1,105 @@
.. include:: ../../../../../Includes.txt
.. _typo3.cms.form.prototypes.<prototypeidentifier>.formelementsdefinition.<formelementtypeidentifier>.formeditor.editors.*.finisherseditor:
=================
[FinishersEditor]
=================
.. _typo3.cms.form.prototypes.<prototypeidentifier>.formelementsdefinition.<formelementtypeidentifier>.formeditor.editors.*.finisherseditor-introduction:
Introduction
============
Shows a select list with finishers. If a finisher is already added to the form definition, then this finisher will be removed from the select list.
.. _typo3.cms.form.prototypes.<prototypeidentifier>.formelementsdefinition.<formelementtypeidentifier>.formeditor.editors.*.finisherseditor-properties:
Properties
==========
.. _typo3.cms.form.prototypes.<prototypeidentifier>.formelementsdefinition.<formelementtypeidentifier>.formeditor.editors.*.templatename-finisherseditor:
templateName
------------
:aspect:`Data type`
string
:aspect:`Needed by`
Backend (form editor)
:aspect:`Mandatory`
Yes
:aspect:`Related options`
- :ref:`TYPO3.CMS.Form.prototypes.\<prototypeIdentifier>.formEditor.formEditorPartials <typo3.cms.form.prototypes.\<prototypeidentifier>.formeditor.formeditorpartials>`
:aspect:`value`
Inspector-FinishersEditor
:aspect:`Good to know`
- :ref:`"Inspector"<concepts-formeditor-inspector>`
:aspect:`Description`
.. include:: properties/TemplateName.rst
.. _typo3.cms.form.prototypes.<prototypeidentifier>.formelementsdefinition.<formelementtypeidentifier>.formeditor.editors.*.identifier-finisherseditor:
.. include:: properties/Identifier.rst
.. _typo3.cms.form.prototypes.<prototypeidentifier>.formelementsdefinition.<formelementtypeidentifier>.formeditor.editors.*.label-finisherseditor:
.. include:: properties/Label.rst
.. _typo3.cms.form.prototypes.<prototypeidentifier>.formelementsdefinition.<formelementtypeidentifier>.formeditor.editors.*.selectoptions.*.value-finisherseditor:
selectOptions.[*].value
-----------------------
:aspect:`Data type`
string
:aspect:`Needed by`
Backend (form editor)
:aspect:`Mandatory`
Yes
:aspect:`Related options`
- :ref:`"[finishersDefinition]"<typo3.cms.form.prototypes.\<prototypeidentifier>.finishersdefinition.*>`
.. :aspect:`Good to know`
ToDo
:aspect:`Description`
Has to match with a ``TYPO3.CMS.Form.prototypes.<prototypeIdentifier>.finishersdefinition`` configuration key.
.. _typo3.cms.form.prototypes.<prototypeidentifier>.formelementsdefinition.<formelementtypeidentifier>.formeditor.editors.*.selectoptions.*.label-finisherseditor:
selectOptions.[*].label
-----------------------
:aspect:`Data type`
string
:aspect:`Needed by`
Backend (form editor)
:aspect:`Mandatory`
Yes
.. :aspect:`Related options`
@ToDo
.. :aspect:`Good to know`
ToDo
:aspect:`Description`
The label which is shown within the select field.
@@ -0,0 +1,53 @@
.. include:: ../../../../../Includes.txt
.. _typo3.cms.form.prototypes.<prototypeidentifier>.formelementsdefinition.<formelementtypeidentifier>.formeditor.editors.*.formelementheadereditor:
=========================
[FormElementHeaderEditor]
=========================
.. _typo3.cms.form.prototypes.<prototypeidentifier>.formelementsdefinition.<formelementtypeidentifier>.formeditor.editors.*.formelementheadereditor-introduction:
Introduction
============
This is not really an editor because this editor don't write values into the form definition.
This editor show the header area for the form element with it's icon and label.
.. _typo3.cms.form.prototypes.<prototypeidentifier>.formelementsdefinition.<formelementtypeidentifier>.formeditor.editors.*.formelementheadereditor-properties:
Properties
==========
.. _typo3.cms.form.prototypes.<prototypeidentifier>.formelementsdefinition.<formelementtypeidentifier>.formeditor.editors.*.templatename-formelementheadereditor:
templateName
------------
:aspect:`Data type`
string
:aspect:`Needed by`
Backend (form editor)
:aspect:`Mandatory`
Yes
:aspect:`Related options`
- :ref:`TYPO3.CMS.Form.prototypes.\<prototypeIdentifier>.formEditor.formEditorPartials <typo3.cms.form.prototypes.\<prototypeidentifier>.formeditor.formeditorpartials>`
:aspect:`value`
Inspector-FormElementHeaderEditor
:aspect:`Good to know`
- :ref:`"Inspector"<concepts-formeditor-inspector>`
:aspect:`Description`
.. include:: properties/TemplateName.rst
.. _typo3.cms.form.prototypes.<prototypeidentifier>.formelementsdefinition.<formelementtypeidentifier>.formeditor.editors.*.identifier-formelementheadereditor:
.. include:: properties/Identifier.rst
@@ -0,0 +1,175 @@
.. include:: ../../../../../Includes.txt
.. _typo3.cms.form.prototypes.<prototypeidentifier>.formelementsdefinition.<formelementtypeidentifier>.formeditor.editors.*.gridcolumnviewportconfigurationeditor:
=======================================
[GridColumnViewPortConfigurationEditor]
=======================================
.. _typo3.cms.form.prototypes.<prototypeidentifier>.formelementsdefinition.<formelementtypeidentifier>.formeditor.editors.*.gridcolumnviewportconfigurationeditor-introduction:
Introduction
============
Shows a viewport selector as buttons and an input field. With this editor, you can define how many columns per viewPort an form element should occupy.
.. _typo3.cms.form.prototypes.<prototypeidentifier>.formelementsdefinition.<formelementtypeidentifier>.formeditor.editors.*.gridcolumnviewportconfigurationeditor-properties:
Properties
==========
.. _typo3.cms.form.prototypes.<prototypeidentifier>.formelementsdefinition.<formelementtypeidentifier>.formeditor.editors.*.templateName-gridcolumnviewportconfigurationeditor:
templateName
------------
:aspect:`Data type`
string
:aspect:`Needed by`
Backend (form editor)
:aspect:`Mandatory`
Yes
:aspect:`Related options`
- :ref:`TYPO3.CMS.Form.prototypes.\<prototypeIdentifier>.formEditor.formEditorPartials <typo3.cms.form.prototypes.\<prototypeidentifier>.formeditor.formeditorpartials>`
:aspect:`value`
Inspector-GridColumnViewPortConfigurationEditor
:aspect:`Good to know`
- :ref:`"Inspector"<concepts-formeditor-inspector>`
:aspect:`Description`
.. include:: properties/TemplateName.rst
.. _typo3.cms.form.prototypes.<prototypeidentifier>.formelementsdefinition.<formelementtypeidentifier>.formeditor.editors.*.identifier-gridcolumnviewportconfigurationeditor:
.. include:: properties/Identifier.rst
.. _typo3.cms.form.prototypes.<prototypeidentifier>.formelementsdefinition.<formelementtypeidentifier>.formeditor.editors.*.label-gridcolumnviewportconfigurationeditor:
.. include:: properties/Label.rst
.. _typo3.cms.form.prototypes.<prototypeidentifier>.formelementsdefinition.<formelementtypeidentifier>.formeditor.editors.*.configurationOptions.viewPorts.*.viewPortIdentifier-gridcolumnviewportconfigurationeditor:
configurationOptions.viewPorts.[*].viewPortIdentifier
-----------------------------------------------------
:aspect:`Data type`
string
:aspect:`Needed by`
Backend (form editor)
:aspect:`Mandatory`
Yes
:aspect:`Related options`
- :ref:`"properties.gridColumnClassAutoConfiguration"<typo3.cms.form.prototypes.\<prototypeIdentifier>.formelementsdefinition.\<formelementtypeidentifier>.properties.gridcolumnclassautoconfiguration>`
.. :aspect:`Good to know`
ToDo
:aspect:`Description`
Has to match with a ``TYPO3.CMS.Form.prototypes.<prototypeIdentifier>.formElementsDefinition.<formElementTypeIdentifier>.properties.gridColumnClassAutoConfiguration.viewPorts`` configuration key.
.. _typo3.cms.form.prototypes.<prototypeidentifier>.formelementsdefinition.<formelementtypeidentifier>.formeditor.editors.*.configurationOptions.viewPorts.*.label-gridcolumnviewportconfigurationeditor:
configurationOptions.viewPorts.[*].label
----------------------------------------
:aspect:`Data type`
string
:aspect:`Needed by`
Backend (form editor)
:aspect:`Mandatory`
Yes
.. :aspect:`Related options`
@ToDo
.. :aspect:`Good to know`
ToDo
:aspect:`Description`
The label for the viewport button.
.. _typo3.cms.form.prototypes.<prototypeidentifier>.formelementsdefinition.<formelementtypeidentifier>.formeditor.editors.*.configurationOptions.numbersOfColumnsToUse.label-gridcolumnviewportconfigurationeditor:
configurationOptions.numbersOfColumnsToUse.label
------------------------------------------------
:aspect:`Data type`
string
:aspect:`Needed by`
Backend (form editor)
:aspect:`Mandatory`
Yes
.. :aspect:`Related options`
@ToDo
.. :aspect:`Good to know`
ToDo
:aspect:`Description`
The label for the "Numbers of columns" input field.
.. _typo3.cms.form.prototypes.<prototypeidentifier>.formelementsdefinition.<formelementtypeidentifier>.formeditor.editors.*.configurationOptions.numbersOfColumnsToUse.propertyPath-gridcolumnviewportconfigurationeditor:
configurationOptions.numbersOfColumnsToUse.propertyPath
-------------------------------------------------------
:aspect:`Data type`
string
:aspect:`Needed by`
Backend (form editor)
:aspect:`Mandatory`
Yes
.. :aspect:`Related options`
@ToDo
.. :aspect:`Good to know`
ToDo
:aspect:`Description`
The path to the property of the form element which should be written.
.. _typo3.cms.form.prototypes.<prototypeidentifier>.formelementsdefinition.<formelementtypeidentifier>.formeditor.editors.*.configurationOptions.numbersOfColumnsToUse.fieldExplanationText-gridcolumnviewportconfigurationeditor:
configurationOptions.numbersOfColumnsToUse.fieldExplanationText
---------------------------------------------------------------
:aspect:`Data type`
string
:aspect:`Needed by`
Backend (form editor)
:aspect:`Mandatory`
Yes
.. :aspect:`Related options`
@ToDo
.. :aspect:`Good to know`
ToDo
:aspect:`Description`
A text which is shown at the bottom of the "Numbers of columns" input field.
@@ -0,0 +1,108 @@
.. include:: ../../../../../Includes.txt
.. _typo3.cms.form.prototypes.<prototypeidentifier>.formelementsdefinition.<formelementtypeidentifier>.formeditor.editors.*.multiselecteditor:
===================
[MultiSelectEditor]
===================
.. _typo3.cms.form.prototypes.<prototypeidentifier>.formelementsdefinition.<formelementtypeidentifier>.formeditor.editors.*.multiselecteditor-introduction:
Introduction
============
Shows a multiselect list with values. If one or more selectoptions are selected, then the option value will be written within a form element property which is defined by the "propertyPath" option.
.. _typo3.cms.form.prototypes.<prototypeidentifier>.formelementsdefinition.<formelementtypeidentifier>.formeditor.editors.*.multiselecteditor-properties:
Properties
==========
.. _typo3.cms.form.prototypes.<prototypeidentifier>.formelementsdefinition.<formelementtypeidentifier>.formeditor.editors.*.templatename-multiselecteditor:
templateName
------------
:aspect:`Data type`
string
:aspect:`Needed by`
Backend (form editor)
:aspect:`Mandatory`
Yes
:aspect:`Related options`
- :ref:`TYPO3.CMS.Form.prototypes.\<prototypeIdentifier>.formEditor.formEditorPartials <typo3.cms.form.prototypes.\<prototypeidentifier>.formeditor.formeditorpartials>`
:aspect:`value`
Inspector-MultiSelectEditor
:aspect:`Good to know`
- :ref:`"Inspector"<concepts-formeditor-inspector>`
:aspect:`Description`
.. include:: properties/TemplateName.rst
.. _typo3.cms.form.prototypes.<prototypeidentifier>.formelementsdefinition.<formelementtypeidentifier>.formeditor.editors.*.identifier-multiselecteditor:
.. include:: properties/Identifier.rst
.. _typo3.cms.form.prototypes.<prototypeidentifier>.formelementsdefinition.<formelementtypeidentifier>.formeditor.editors.*.label-multiselecteditor:
.. include:: properties/Label.rst
.. _typo3.cms.form.prototypes.<prototypeidentifier>.formelementsdefinition.<formelementtypeidentifier>.formeditor.editors.*.propertypath-multiselecteditor:
.. include:: properties/PropertyPath.rst
.. _typo3.cms.form.prototypes.<prototypeidentifier>.formelementsdefinition.<formelementtypeidentifier>.formeditor.editors.*.selectoptions.*.value-multiselecteditor:
selectOptions.[*].value
-----------------------
:aspect:`Data type`
string
:aspect:`Needed by`
Backend (form editor)
:aspect:`Mandatory`
Yes
.. :aspect:`Related options`
@ToDo
.. :aspect:`Good to know`
ToDo
:aspect:`Description`
The value which should be written into the corresponding form elements property.
The corresponding form elements property is identified by the ``propertyPath`` option.
.. _typo3.cms.form.prototypes.<prototypeidentifier>.formelementsdefinition.<formelementtypeidentifier>.formeditor.editors.*.selectoptions.*.label-multiselecteditor:
selectOptions.[*].label
-----------------------
:aspect:`Data type`
string
:aspect:`Needed by`
Backend (form editor)
:aspect:`Mandatory`
Yes
.. :aspect:`Related options`
@ToDo
.. :aspect:`Good to know`
ToDo
:aspect:`Description`
The label which is shown within the select field.
@@ -0,0 +1,232 @@
.. include:: ../../../../../Includes.txt
.. _typo3.cms.form.prototypes.<prototypeidentifier>.formelementsdefinition.<formelementtypeidentifier>.formeditor.editors.*.propertygrideditor:
====================
[PropertyGridEditor]
====================
.. _typo3.cms.form.prototypes.<prototypeidentifier>.formelementsdefinition.<formelementtypeidentifier>.formeditor.editors.*.propertygrideditor-introduction:
Introduction
============
Shows a grid which allows you to add (and remove) multiple rows and fill values for each row.
.. _typo3.cms.form.prototypes.<prototypeidentifier>.formelementsdefinition.<formelementtypeidentifier>.formeditor.editors.*.propertygrideditor-properties:
Properties
==========
.. _typo3.cms.form.prototypes.<prototypeidentifier>.formelementsdefinition.<formelementtypeidentifier>.formeditor.editors.*.templatename-propertygrideditor:
templateName
------------
:aspect:`Data type`
string
:aspect:`Needed by`
Backend (form editor)
:aspect:`Mandatory`
Yes
:aspect:`Related options`
- :ref:`TYPO3.CMS.Form.prototypes.\<prototypeIdentifier>.formEditor.formEditorPartials <typo3.cms.form.prototypes.\<prototypeidentifier>.formeditor.formeditorpartials>`
:aspect:`value`
Inspector-PropertyGridEditor
:aspect:`Good to know`
- :ref:`"Inspector"<concepts-formeditor-inspector>`
:aspect:`Description`
.. include:: properties/TemplateName.rst
.. _typo3.cms.form.prototypes.<prototypeidentifier>.formelementsdefinition.<formelementtypeidentifier>.formeditor.editors.*.identifier-propertygrideditor:
.. include:: properties/Identifier.rst
.. _typo3.cms.form.prototypes.<prototypeidentifier>.formelementsdefinition.<formelementtypeidentifier>.formeditor.editors.*.label-propertygrideditor:
.. include:: properties/Label.rst
.. _typo3.cms.form.prototypes.<prototypeidentifier>.formelementsdefinition.<formelementtypeidentifier>.formeditor.editors.*.propertypath-propertygrideditor:
.. include:: properties/PropertyPath.rst
.. _typo3.cms.form.prototypes.<prototypeidentifier>.formelementsdefinition.<formelementtypeidentifier>.formeditor.editors.*.issortable-propertygrideditor:
isSortable
----------
:aspect:`Data type`
bool
:aspect:`Needed by`
Backend (form editor)
:aspect:`Mandatory`
Yes
.. :aspect:`Related options`
@ToDo
:aspect:`Good to know`
- :ref:`"Inspector"<concepts-formeditor-inspector>`
:aspect:`Description`
If set to 'false' the rows are not sortable.
.. _typo3.cms.form.prototypes.<prototypeidentifier>.formelementsdefinition.<formelementtypeidentifier>.formeditor.editors.*.enableaddrow-propertygrideditor:
enableAddRow
------------
:aspect:`Data type`
bool
:aspect:`Needed by`
Backend (form editor)
:aspect:`Mandatory`
Yes
.. :aspect:`Related options`
@ToDo
:aspect:`Good to know`
- :ref:`"Inspector"<concepts-formeditor-inspector>`
:aspect:`Description`
If set to 'false' the "add new row" button is disabled.
.. _typo3.cms.form.prototypes.<prototypeidentifier>.formelementsdefinition.<formelementtypeidentifier>.formeditor.editors.*.enabledeleterow-propertygrideditor:
enableDeleteRow
---------------
:aspect:`Data type`
bool
:aspect:`Needed by`
Backend (form editor)
:aspect:`Mandatory`
Yes
.. :aspect:`Related options`
@ToDo
:aspect:`Good to know`
- :ref:`"Inspector"<concepts-formeditor-inspector>`
:aspect:`Description`
If set to 'false' the "delete row" button is disabled.
.. _typo3.cms.form.prototypes.<prototypeidentifier>.formelementsdefinition.<formelementtypeidentifier>.formeditor.editors.*.multiselection-propertygrideditor:
multiSelection
--------------
:aspect:`Data type`
bool
:aspect:`Needed by`
Backend (form editor)
:aspect:`Mandatory`
Yes
.. :aspect:`Related options`
@ToDo
:aspect:`Good to know`
- :ref:`"Inspector"<concepts-formeditor-inspector>`
:aspect:`Description`
If set to 'false' only one row can be marked as preselected.
.. _typo3.cms.form.prototypes.<prototypeidentifier>.formelementsdefinition.<formelementtypeidentifier>.formeditor.editors.*.removelastavailablerowflashmessagetitle-propertygrideditor:
removeLastAvailableRowFlashMessageTitle
---------------------------------------
:aspect:`Data type`
string
:aspect:`Needed by`
Backend (form editor)
:aspect:`Mandatory`
Yes
.. :aspect:`Related options`
@ToDo
:aspect:`Good to know`
- :ref:`"Inspector"<concepts-formeditor-inspector>`
- :ref:`"Translate form editor settings"<concepts-formeditor-translation-formeditor>`
:aspect:`Description`
There must be at least one existing row within this ``inspector editor``. If the last existing row is tried to be removed a flash message is shown.
This property define the title for the flash message.
.. _typo3.cms.form.prototypes.<prototypeidentifier>.formelementsdefinition.<formelementtypeidentifier>.formeditor.editors.*.removelastavailablerowflashmessagemessage-propertygrideditor:
removeLastAvailableRowFlashMessageMessage
-----------------------------------------
:aspect:`Data type`
string
:aspect:`Needed by`
Backend (form editor)
:aspect:`Mandatory`
Yes
.. :aspect:`Related options`
@ToDo
:aspect:`Good to know`
- :ref:`"Inspector"<concepts-formeditor-inspector>`
- :ref:`"Translate form editor settings"<concepts-formeditor-translation-formeditor>`
:aspect:`Description`
There must be at least one existing row within this ``inspector editor``. If the last existing row is tried to be removed a flash message is shown.
This property define the text for the flash message.
.. _typo3.cms.form.prototypes.<prototypeidentifier>.formelementsdefinition.<formelementtypeidentifier>.formeditor.editors.*.shouldshowpreselectedvaluecolumn-propertygrideditor:
shouldShowPreselectedValueColumn
--------------------------------
:aspect:`Data type`
string
:aspect:`Needed by`
Backend (form editor)
:aspect:`Mandatory`
Yes
.. :aspect:`Related options`
@ToDo
:aspect:`Good to know`
- :ref:`"Inspector"<concepts-formeditor-inspector>`
:aspect:`Description`
If set to 'false' the column which is used to mark a row as preselected will be disabled.
@@ -0,0 +1,52 @@
.. include:: ../../../../../Includes.txt
.. _typo3.cms.form.prototypes.<prototypeidentifier>.formelementsdefinition.<formelementtypeidentifier>.formeditor.editors.*.removeelementeditor:
=====================
[RemoveElementEditor]
=====================
.. _typo3.cms.form.prototypes.<prototypeidentifier>.formelementsdefinition.<formelementtypeidentifier>.formeditor.editors.*.removeelementeditor-introduction:
Introduction
============
This editor show a button which allows you to remove the form element or the collection element (finishers/ validators).
.. _typo3.cms.form.prototypes.<prototypeidentifier>.formelementsdefinition.<formelementtypeidentifier>.formeditor.editors.*.removeelementeditor-properties:
Properties
==========
.. _typo3.cms.form.prototypes.<prototypeidentifier>.formelementsdefinition.<formelementtypeidentifier>.formeditor.editors.*.templatename-removeelementeditor:
templateName
------------
:aspect:`Data type`
string
:aspect:`Needed by`
Backend (form editor)
:aspect:`Mandatory`
Yes
:aspect:`Related options`
- :ref:`TYPO3.CMS.Form.prototypes.\<prototypeIdentifier>.formEditor.formEditorPartials <typo3.cms.form.prototypes.\<prototypeidentifier>.formeditor.formeditorpartials>`
:aspect:`value`
Inspector-RemoveElementEditor
:aspect:`Good to know`
- :ref:`"Inspector"<concepts-formeditor-inspector>`
:aspect:`Description`
.. include:: properties/TemplateName.rst
.. _typo3.cms.form.prototypes.<prototypeidentifier>.formelementsdefinition.<formelementtypeidentifier>.formeditor.editors.*.identifier-removeelementeditor:
.. include:: properties/Identifier.rst
@@ -0,0 +1,127 @@
.. include:: ../../../../../Includes.txt
.. _typo3.cms.form.prototypes.<prototypeidentifier>.formelementsdefinition.<formelementtypeidentifier>.formeditor.editors.*.requiredvalidatoreditor:
=========================
[RequiredValidatorEditor]
=========================
.. _typo3.cms.form.prototypes.<prototypeidentifier>.formelementsdefinition.<formelementtypeidentifier>.formeditor.editors.*.requiredvalidatoreditor-introduction:
Introduction
============
Shows a checkbox. If set, a validator ('NotEmpty' by default) will be written into the ``form definition``. In addition another property could be written into the ``form definition``.
.. _typo3.cms.form.prototypes.<prototypeidentifier>.formelementsdefinition.<formelementtypeidentifier>.formeditor.editors.*.requiredvalidatoreditor-properties:
Properties
==========
.. _typo3.cms.form.prototypes.<prototypeidentifier>.formelementsdefinition.<formelementtypeidentifier>.formeditor.editors.*.templatename-requiredvalidatoreditor:
templateName
------------
:aspect:`Data type`
string
:aspect:`Needed by`
Backend (form editor)
:aspect:`Mandatory`
Yes
:aspect:`Related options`
- :ref:`TYPO3.CMS.Form.prototypes.\<prototypeIdentifier>.formEditor.formEditorPartials <typo3.cms.form.prototypes.\<prototypeidentifier>.formeditor.formeditorpartials>`
:aspect:`value`
Inspector-RequiredValidatorEditor
:aspect:`Good to know`
- :ref:`"Inspector"<concepts-formeditor-inspector>`
:aspect:`Description`
.. include:: properties/TemplateName.rst
.. _typo3.cms.form.prototypes.<prototypeidentifier>.formelementsdefinition.<formelementtypeidentifier>.formeditor.editors.*.identifier-requiredvalidatoreditor:
.. include:: properties/Identifier.rst
.. _typo3.cms.form.prototypes.<prototypeidentifier>.formelementsdefinition.<formelementtypeidentifier>.formeditor.editors.*.label-requiredvalidatoreditor:
.. include:: properties/Label.rst
.. _typo3.cms.form.prototypes.<prototypeidentifier>.formelementsdefinition.<formelementtypeidentifier>.formeditor.editors.*.validatoridentifier-requiredvalidatoreditor:
validatorIdentifier
-------------------
:aspect:`Data type`
string
:aspect:`Needed by`
Backend (form editor)
:aspect:`Mandatory`
Yes
.. :aspect:`Related options`
@ToDo
:aspect:`Good to know`
- :ref:`"Inspector"<concepts-formeditor-inspector>`
:aspect:`Description`
The ``<validatorIdentifier>`` which should be used.
.. _typo3.cms.form.prototypes.<prototypeidentifier>.formelementsdefinition.<formelementtypeidentifier>.formeditor.editors.*.propertypath-requiredvalidatoreditor:
propertyPath
------------
:aspect:`Data type`
string
:aspect:`Needed by`
Backend (form editor)
:aspect:`Mandatory`
No
.. :aspect:`Related options`
@ToDo
:aspect:`Good to know`
- :ref:`"Inspector"<concepts-formeditor-inspector>`
:aspect:`Description`
An property path which should be written into the `form definition`` if the checkbox is set.
.. _typo3.cms.form.prototypes.<prototypeidentifier>.formelementsdefinition.<formelementtypeidentifier>.formeditor.editors.*.propertyvalue-requiredvalidatoreditor:
propertyValue
-------------
:aspect:`Data type`
string
:aspect:`Needed by`
Backend (form editor)
:aspect:`Mandatory`
No
.. :aspect:`Related options`
@ToDo
:aspect:`Good to know`
- :ref:`"Inspector"<concepts-formeditor-inspector>`
:aspect:`Description`
The value for the property path which should be written into the `form definition`` if the checkbox is set.
@@ -0,0 +1,110 @@
.. include:: ../../../../../Includes.txt
.. _typo3.cms.form.prototypes.<prototypeidentifier>.formelementsdefinition.<formelementtypeidentifier>.formeditor.editors.*.singleselecteditor:
====================
[SingleSelectEditor]
====================
.. _typo3.cms.form.prototypes.<prototypeidentifier>.formelementsdefinition.<formelementtypeidentifier>.formeditor.editors.*.singleselecteditor-introduction:
Introduction
============
Shows a single select list with values. If a selectoption is selected, then the option value will be written within a form element property which is defined by the "propertyPath" option.
.. _typo3.cms.form.prototypes.<prototypeidentifier>.formelementsdefinition.<formelementtypeidentifier>.formeditor.editors.*.singleselecteditor-properties:
Properties
==========
.. _typo3.cms.form.prototypes.<prototypeidentifier>.formelementsdefinition.<formelementtypeidentifier>.formeditor.editors.*.templatename-singleselecteditor:
templateName
------------
:aspect:`Data type`
string
:aspect:`Needed by`
Backend (form editor)
:aspect:`Mandatory`
Yes
:aspect:`Related options`
- :ref:`TYPO3.CMS.Form.prototypes.\<prototypeIdentifier>.formEditor.formEditorPartials <typo3.cms.form.prototypes.\<prototypeidentifier>.formeditor.formeditorpartials>`
:aspect:`value`
Inspector-SingleSelectEditor
:aspect:`Good to know`
- :ref:`"Inspector"<concepts-formeditor-inspector>`
:aspect:`Description`
.. include:: properties/TemplateName.rst
.. _typo3.cms.form.prototypes.<prototypeidentifier>.formelementsdefinition.<formelementtypeidentifier>.formeditor.editors.*.identifier-singleselecteditor:
.. include:: properties/Identifier.rst
.. _typo3.cms.form.prototypes.<prototypeidentifier>.formelementsdefinition.<formelementtypeidentifier>.formeditor.editors.*.label-singleselecteditor:
.. include:: properties/Label.rst
.. _typo3.cms.form.prototypes.<prototypeidentifier>.formelementsdefinition.<formelementtypeidentifier>.formeditor.editors.*.propertypath-singleselecteditor:
.. include:: properties/PropertyPath.rst
.. _typo3.cms.form.prototypes.<prototypeidentifier>.formelementsdefinition.<formelementtypeidentifier>.formeditor.editors.*.selectoptions.*.value-singleselecteditor:
selectOptions.[*].value
-----------------------
:aspect:`Data type`
string
:aspect:`Needed by`
Backend (form editor)
:aspect:`Mandatory`
Yes
.. :aspect:`Related options`
@ToDo
.. :aspect:`Good to know`
ToDo
:aspect:`Description`
The value which should be written into the corresponding form elements property.
The corresponding form elements property is identified by the ``propertyPath`` option.
.. _typo3.cms.form.prototypes.<prototypeIdentifier>.formelementsdefinition.<formelementtypeidentifier>.formeditor.editors.*.selectoptions.*.label-singleselecteditor:
selectOptions.[*].label
-----------------------
:aspect:`Data type`
string
:aspect:`Needed by`
Backend (form editor)
:aspect:`Mandatory`
Yes
.. :aspect:`Related options`
@ToDo
.. :aspect:`Good to know`
ToDo
:aspect:`Description`
The label which is shown within the select field.
@@ -0,0 +1,205 @@
.. include:: ../../../../../Includes.txt
.. _typo3.cms.form.prototypes.<prototypeidentifier>.formelementsdefinition.<formelementtypeidentifier>.formeditor.editors.*.texteditor:
============
[TextEditor]
============
.. _typo3.cms.form.prototypes.<prototypeidentifier>.formelementsdefinition.<formelementtypeidentifier>.formeditor.editors.*.texteditor-introduction:
Introduction
============
Shows a single line textfield.
.. _typo3.cms.form.prototypes.<prototypeidentifier>.formelementsdefinition.<formelementtypeidentifier>.formeditor.editors.*.texteditor-properties:
Properties
==========
.. _typo3.cms.form.prototypes.<prototypeidentifier>.formelementsdefinition.<formelementtypeidentifier>.formeditor.editors.*.templatename-texteditor:
templateName
------------
:aspect:`Data type`
string
:aspect:`Needed by`
Backend (form editor)
:aspect:`Mandatory`
Yes
:aspect:`Related options`
- :ref:`TYPO3.CMS.Form.prototypes.\<prototypeIdentifier>.formEditor.formEditorPartials <typo3.cms.form.prototypes.\<prototypeidentifier>.formeditor.formeditorpartials>`
:aspect:`value`
Inspector-TextEditor
:aspect:`Good to know`
- :ref:`"Inspector"<concepts-formeditor-inspector>`
:aspect:`Description`
.. include:: properties/TemplateName.rst
.. _typo3.cms.form.prototypes.<prototypeidentifier>.formelementsdefinition.<formelementtypeidentifier>.formeditor.editors.*.identifier-texteditor:
.. include:: properties/Identifier.rst
.. _typo3.cms.form.prototypes.<prototypeidentifier>.formelementsdefinition.<formelementtypeidentifier>.formeditor.editors.*.label-texteditor:
.. include:: properties/Label.rst
.. _typo3.cms.form.prototypes.<prototypeidentifier>.formelementsdefinition.<formelementtypeidentifier>.formeditor.editors.*.propertypath-texteditor:
.. include:: properties/PropertyPath.rst
.. _typo3.cms.form.prototypes.<prototypeidentifier>.formelementsdefinition.<formelementtypeidentifier>.formeditor.editors.*.donotsetifpropertyvalueisempty-texteditor:
doNotSetIfPropertyValueIsEmpty
------------------------------
:aspect:`Data type`
bool
:aspect:`Needed by`
Backend (form editor)
:aspect:`Mandatory`
No
.. :aspect:`Related options`
@ToDo
:aspect:`Good to know`
- :ref:`"Inspector"<concepts-formeditor-inspector>`
:aspect:`Description`
If set to true then the property which should be written through this ``inspector editor`` will be removed within the ``form definition`` if the
value from the ``inspector editor`` is empty instead of writing an empty value ('') for this property.
.. _typo3.cms.form.prototypes.<prototypeidentifier>.formelementsdefinition.<formelementtypeidentifier>.formeditor.editors.*.propertyvalidators-texteditor:
propertyValidators
------------------
:aspect:`Data type`
array
:aspect:`Needed by`
Backend (form editor)
:aspect:`Mandatory`
No
:aspect:`Related options`
- :ref:`"formElementPropertyValidatorsDefinition"<typo3.cms.form.prototypes.\<prototypeidentifier>.formeditor.formelementpropertyvalidatorsdefinition>`
:aspect:`Good to know`
- :ref:`"Inspector"<concepts-formeditor-inspector>`
:aspect:`Description`
This ``inspector editors`` is able to validate it's value through JavaScript methods.
This JavaScript validators can be registered through ``getFormEditorApp().addPropertyValidationValidator()``.
The first method argument is the identifier for such a validator.
Every array value within ``propertyValidators`` must be equal to such a identifier.
For example:
.. code-block:: yaml
propertyValidators:
10: 'Integer'
20: 'FormElementIdentifierWithinCurlyBracesExclusive'
.. _typo3.cms.form.prototypes.<prototypeidentifier>.formelementsdefinition.<formelementtypeidentifier>.formeditor.editors.*.propertyvalidatorsmode-texteditor:
propertyValidatorsMode
----------------------
:aspect:`Data type`
string
:aspect:`Needed by`
Backend (form editor)
:aspect:`Mandatory`
No
.. :aspect:`Related options`
@ToDo
:aspect:`Default value`
AND
:aspect:`possible values`
OR/ AND
:aspect:`Good to know`
- :ref:`"Inspector"<concepts-formeditor-inspector>`
:aspect:`Description`
If set to 'OR' then at least one validator must be valid to accept the ``inspector editor`` value. If set to 'AND' then all validators must be valid.
.. _typo3.cms.form.prototypes.<prototypeidentifier>.formelementsdefinition.<formelementtypeidentifier>.formeditor.editors.*.fieldexplanationtext-texteditor:
fieldExplanationText
--------------------
:aspect:`Data type`
string
:aspect:`Needed by`
Backend (form editor)
:aspect:`Mandatory`
No
.. :aspect:`Related options`
@ToDo
:aspect:`Good to know`
- :ref:`"Inspector"<concepts-formeditor-inspector>`
- :ref:`"Translate form editor settings"<concepts-formeditor-translation-formeditor>`
:aspect:`Description`
A text which is shown at the bottom of the ``inspector editor``.
.. _typo3.cms.form.prototypes.<prototypeidentifier>.formelementsdefinition.<formelementtypeidentifier>.formeditor.editors.*.additionalelementpropertypaths-texteditor:
additionalElementPropertyPaths
------------------------------
:aspect:`Data type`
array
:aspect:`Needed by`
Backend (form editor)
:aspect:`Mandatory`
No
.. :aspect:`Related options`
@ToDo
:aspect:`Good to know`
- :ref:`"Inspector"<concepts-formeditor-inspector>`
:aspect:`Description`
An array which holds property paths which should be written in addition to the propertyPath option.
For example:
.. code-block:: yaml
additionalElementPropertyPaths:
10: 'properties.fluidAdditionalAttributes.maxlength'
@@ -0,0 +1,59 @@
.. include:: ../../../../../Includes.txt
.. _typo3.cms.form.prototypes.<prototypeidentifier>.formelementsdefinition.<formelementtypeidentifier>.formeditor.editors.*.textareaeditor:
================
[TextareaEditor]
================
.. _typo3.cms.form.prototypes.<prototypeidentifier>.formelementsdefinition.<formelementtypeidentifier>.formeditor.editors.*.textareaeditor-introduction:
Introduction
============
Shows a textarea.
.. _typo3.cms.form.prototypes.<prototypeidentifier>.formelementsdefinition.<formelementtypeidentifier>.formeditor.editors.*.textareaeditor-properties:
Properties
==========
.. _typo3.cms.form.prototypes.<prototypeidentifier>.formelementsdefinition.<formelementtypeidentifier>.formeditor.editors.*.templatename-textareaeditor:
templateName
------------
:aspect:`Data type`
string
:aspect:`Needed by`
Backend (form editor)
:aspect:`Mandatory`
Yes
:aspect:`Related options`
- :ref:`TYPO3.CMS.Form.prototypes.\<prototypeIdentifier>.formEditor.formEditorPartials <typo3.cms.form.prototypes.\<prototypeidentifier>.formeditor.formeditorpartials>`
:aspect:`value`
Inspector-TextareaEditor
:aspect:`Good to know`
- :ref:`"Inspector"<concepts-formeditor-inspector>`
:aspect:`Description`
.. include:: properties/TemplateName.rst
.. _typo3.cms.form.prototypes.<prototypeidentifier>.formelementsdefinition.<formelementtypeidentifier>.formeditor.editors.*.identifier-textareaeditor:
.. include:: properties/Identifier.rst
.. _typo3.cms.form.prototypes.<prototypeidentifier>.formelementsdefinition.<formelementtypeidentifier>.formeditor.editors.*.label-textareaeditor:
.. include:: properties/Label.rst
.. _typo3.cms.form.prototypes.<prototypeidentifier>.formelementsdefinition.<formelementtypeidentifier>.formeditor.editors.*.propertypath-textareaeditor:
.. include:: properties/PropertyPath.rst
@@ -0,0 +1,199 @@
.. include:: ../../../../../Includes.txt
.. _typo3.cms.form.prototypes.<prototypeidentifier>.formelementsdefinition.<formelementtypeidentifier>.formeditor.editors.*.typo3winbrowsereditor:
=======================
[Typo3WinBrowserEditor]
=======================
.. _typo3.cms.form.prototypes.<prototypeidentifier>.formelementsdefinition.<formelementtypeidentifier>.formeditor.editors.*.typo3winbrowsereditor-introduction:
Introduction
============
Shows a popup window to select a record (e.g. pages or tt_content records) as you know it from within the form engine.
.. _typo3.cms.form.prototypes.<prototypeidentifier>.formelementsdefinition.<formelementtypeidentifier>.formeditor.editors.*.typo3winbrowsereditor-properties:
Properties
==========
.. _typo3.cms.form.prototypes.<prototypeidentifier>.formelementsdefinition.<formelementtypeidentifier>.formeditor.editors.*.templatename-typo3winbrowsereditor:
templateName
------------
:aspect:`Data type`
string
:aspect:`Needed by`
Backend (form editor)
:aspect:`Mandatory`
Yes
:aspect:`Related options`
- :ref:`TYPO3.CMS.Form.prototypes.\<prototypeIdentifier>.formEditor.formEditorPartials <typo3.cms.form.prototypes.\<prototypeidentifier>.formeditor.formeditorpartials>`
:aspect:`value`
Inspector-Typo3WinBrowserEditor
:aspect:`Good to know`
- :ref:`"Inspector"<concepts-formeditor-inspector>`
:aspect:`Description`
.. include:: properties/TemplateName.rst
.. _typo3.cms.form.prototypes.<prototypeidentifier>.formelementsdefinition.<formelementtypeidentifier>.formeditor.editors.*.identifier-typo3winbrowsereditor:
.. include:: properties/Identifier.rst
.. _typo3.cms.form.prototypes.<prototypeidentifier>.formelementsdefinition.<formelementtypeidentifier>.formeditor.editors.*.label-typo3winbrowsereditor:
.. include:: properties/Label.rst
.. _typo3.cms.form.prototypes.<prototypeidentifier>.formelementsdefinition.<formelementtypeidentifier>.formeditor.editors.*.propertypath-typo3winbrowsereditor:
.. include:: properties/PropertyPath.rst
.. _typo3.cms.form.prototypes.<prototypeidentifier>.formelementsdefinition.<formelementtypeidentifier>.formeditor.editors.*.buttonlabel-typo3winbrowsereditor:
buttonLabel
-----------
:aspect:`Data type`
string
:aspect:`Needed by`
Backend (form editor)
:aspect:`Mandatory`
Yes
.. :aspect:`Related options`
@ToDo
:aspect:`Good to know`
- :ref:`"Inspector"<concepts-formeditor-inspector>`
- :ref:`"Translate form editor settings"<concepts-formeditor-translation-formeditor>`
:aspect:`Description`
The label for the button which opens the popup window.
.. _typo3.cms.form.prototypes.<prototypeidentifier>.formelementsdefinition.<formelementtypeidentifier>.formeditor.editors.*.browsabletype-typo3winbrowsereditor:
browsableType
-------------
:aspect:`Data type`
string
:aspect:`Needed by`
Backend (form editor)
:aspect:`Mandatory`
Yes
.. :aspect:`Related options`
@ToDo
:aspect:`Good to know`
- :ref:`"Inspector"<concepts-formeditor-inspector>`
:aspect:`Description`
The allowed selectable record types e.g 'pages' or 'tt_content'.
.. _typo3.cms.form.prototypes.<prototypeidentifier>.formelementsdefinition.<formelementtypeidentifier>.formeditor.editors.*.propertyvalidators-typo3winbrowsereditor:
propertyValidators
------------------
:aspect:`Data type`
array
:aspect:`Needed by`
Backend (form editor)
:aspect:`Mandatory`
No
:aspect:`Related options`
- :ref:`"formElementPropertyValidatorsDefinition"<typo3.cms.form.prototypes.\<prototypeidentifier>.formeditor.formelementpropertyvalidatorsdefinition>`
:aspect:`Good to know`
- :ref:`"Inspector"<concepts-formeditor-inspector>`
:aspect:`Description`
This ``inspector editors`` is able to validate it's value through JavaScript methods.
This JavaScript validators can be registered through ``getFormEditorApp().addPropertyValidationValidator()``.
The first method argument is the identifier for such a validator.
Every array value within ``propertyValidators`` must be equal to such a identifier.
For example:
.. code-block:: yaml
propertyValidators:
10: 'Integer'
20: 'FormElementIdentifierWithinCurlyBracesExclusive'
.. _typo3.cms.form.prototypes.<prototypeidentifier>.formelementsdefinition.<formelementtypeidentifier>.formeditor.editors.*.propertyvalidatorsmode-typo3winbrowsereditor:
propertyValidatorsMode
----------------------
:aspect:`Data type`
string
:aspect:`Needed by`
Backend (form editor)
:aspect:`Mandatory`
No
.. :aspect:`Related options`
@ToDo
:aspect:`Default value`
AND
:aspect:`possible values`
OR/ AND
:aspect:`Good to know`
- :ref:`"Inspector"<concepts-formeditor-inspector>`
:aspect:`Description`
If set to 'OR' then at least one validator must be valid to accept the ``inspector editor`` value. If set to 'AND' then all validators must be valid.
.. _typo3.cms.form.prototypes.<prototypeidentifier>.formelementsdefinition.<formelementtypeidentifier>.formeditor.editors.*.fieldexplanationtext-typo3winbrowsereditor:
fieldExplanationText
--------------------
:aspect:`Data type`
string
:aspect:`Needed by`
Backend (form editor)
:aspect:`Mandatory`
No
.. :aspect:`Related options`
@ToDo
:aspect:`Good to know`
- :ref:`"Inspector"<concepts-formeditor-inspector>`
- :ref:`"Translate form editor settings"<concepts-formeditor-translation-formeditor>`
:aspect:`Description`
A text which is shown at the bottom of the ``inspector editor``.
@@ -0,0 +1,84 @@
.. include:: ../../../../../../Includes.txt
.. _typo3.cms.form.prototypes.<prototypeidentifier>.formelementsdefinition.<formelementtypeidentifier>.formeditor.editors.*.validationerrormessageeditor:
==============================
[ValidationErrorMessageEditor]
==============================
.. _typo3.cms.form.prototypes.<prototypeidentifier>.formelementsdefinition.<formelementtypeidentifier>.formeditor.editors.*.validationerrormessageeditor-introduction:
Introduction
============
Shows a textarea. It allows the definition of custom validation error messages. Within the form editor, one can set
those error messages for all existing validators.
.. _typo3.cms.form.prototypes.<prototypeidentifier>.formelementsdefinition.<formelementtypeidentifier>.formeditor.editors.*.validationerrormessageeditor-properties:
Properties
==========
.. _typo3.cms.form.prototypes.<prototypeidentifier>.formelementsdefinition.<formelementtypeidentifier>.formeditor.editors.*.templatename-validationerrormessageeditor:
templateName
------------
:aspect:`Data type`
string
:aspect:`Needed by`
Backend (form editor)
:aspect:`Mandatory`
Yes
:aspect:`Related options`
- :ref:`TYPO3.CMS.Form.prototypes.\<prototypeIdentifier>.formEditor.formEditorPartials <typo3.cms.form.prototypes.\<prototypeidentifier>.formeditor.formeditorpartials>`
:aspect:`value`
Inspector-ValidationErrorMessageEditor
:aspect:`Good to know`
- :ref:`"Inspector"<concepts-formeditor-inspector>`
:aspect:`Description`
.. include:: properties/TemplateName.rst
.. _typo3.cms.form.prototypes.<prototypeidentifier>.formelementsdefinition.<formelementtypeidentifier>.formeditor.editors.*.identifier-validationerrormessageeditor:
.. include:: properties/Identifier.rst
.. _typo3.cms.form.prototypes.<prototypeidentifier>.formelementsdefinition.<formelementtypeidentifier>.formeditor.editors.*.label-validationerrormessageeditor:
.. include:: properties/Label.rst
.. _typo3.cms.form.prototypes.<prototypeidentifier>.formelementsdefinition.<formelementtypeidentifier>.formeditor.editors.*.propertypath-validationerrormessageeditor:
.. include:: properties/PropertyPath.rst
.. _typo3.cms.form.prototypes.<prototypeidentifier>.formelementsdefinition.<formelementtypeidentifier>.formeditor.editors.*.fieldexplanationtext-validationerrormessageeditor:
fieldExplanationText
--------------------
:aspect:`Data type`
string
:aspect:`Needed by`
Backend (form editor)
:aspect:`Mandatory`
No
.. :aspect:`Related options`
@ToDo
:aspect:`Good to know`
- :ref:`"Inspector"<concepts-formeditor-inspector>`
- :ref:`"Translate form editor settings"<concepts-formeditor-translation-formeditor>`
:aspect:`Description`
A text which is shown at the bottom of the ``inspector editor``.
@@ -0,0 +1,104 @@
.. include:: ../../../../../Includes.txt
.. _typo3.cms.form.prototypes.<prototypeidentifier>.formelementsdefinition.<formelementtypeidentifier>.formeditor.editors.*.validatorseditor:
==================
[ValidatorsEditor]
==================
.. _typo3.cms.form.prototypes.<prototypeidentifier>.formelementsdefinition.<formelementtypeidentifier>.formeditor.editors.*.validatorseditor-introduction:
Introduction
============
Shows a select list with validators. If a validator is already added to the form element, then this validator will be removed from the select list.
.. _typo3.cms.form.prototypes.<prototypeidentifier>.formelementsdefinition.<formelementtypeidentifier>.formeditor.editors.*.validatorseditor-properties:
Properties
==========
.. _typo3.cms.form.prototypes.<prototypeidentifier>.formelementsdefinition.<formelementtypeidentifier>.formeditor.editors.*.templatename-validatorseditor:
templateName
------------
:aspect:`Data type`
string
:aspect:`Needed by`
Backend (form editor)
:aspect:`Mandatory`
Yes
:aspect:`Related options`
- :ref:`TYPO3.CMS.Form.prototypes.\<prototypeIdentifier>.formEditor.formEditorPartials <typo3.cms.form.prototypes.\<prototypeidentifier>.formeditor.formeditorpartials>`
:aspect:`value`
Inspector-FinishersEditor
:aspect:`Good to know`
- :ref:`"Inspector"<concepts-formeditor-inspector>`
:aspect:`Description`
.. include:: properties/TemplateName.rst
.. _typo3.cms.form.prototypes.<prototypeidentifier>.formelementsdefinition.<formelementtypeidentifier>.formeditor.editors.*.identifier-validatorseditor:
.. include:: properties/Identifier.rst
.. _typo3.cms.form.prototypes.<prototypeidentifier>.formelementsdefinition.<formelementtypeidentifier>.formeditor.editors.*.label-validatorseditor:
.. include:: properties/Label.rst
.. _typo3.cms.form.prototypes.<prototypeidentifier>.formelementsdefinition.<formelementtypeidentifier>.formeditor.editors.*.selectoptions.*.value-validatorseditor:
selectOptions.[*].value
-----------------------
:aspect:`Data type`
string
:aspect:`Needed by`
Backend (form editor)
:aspect:`Mandatory`
Yes
:aspect:`Related options`
- :ref:`"[validatorsDefinition]"<typo3.cms.form.prototypes.\<prototypeidentifier>.validatorsdefinition.*>`
.. :aspect:`Good to know`
ToDo
:aspect:`Description`
Has to match with a ``TYPO3.CMS.Form.prototypes.<prototypeIdentifier>.validatorsDefinition`` configuration key.
.. _typo3.cms.form.prototypes.<prototypeidentifier>.formelementsdefinition.<formelementtypeidentifier>.formeditor.editors.*.selectoptions.*.label-validatorseditor:
selectOptions.[*].label
-----------------------
:aspect:`Data type`
string
:aspect:`Needed by`
Backend (form editor)
:aspect:`Mandatory`
Yes
.. :aspect:`Related options`
@ToDo
.. :aspect:`Good to know`
ToDo
:aspect:`Description`
The label which is shown within the select field.
@@ -0,0 +1,24 @@
identifier
----------
:aspect:`Option path`
TYPO3.CMS.Form.prototypes.<prototypeIdentifier>.formElementsDefinition.<formElementTypeIdentifier>.formEditor.editors.*.identifier
:aspect:`Data type`
string
:aspect:`Needed by`
Backend (form editor)
:aspect:`Mandatory`
Yes
:aspect:`Default value`
Depends (see :ref:`concrete element configuration <typo3.cms.form.prototypes.\<prototypeidentifier>.formelementsdefinition.\<formelementtypeidentifier>-concreteconfigurations>`)
:aspect:`Good to know`
- :ref:`"Inspector"<concepts-formeditor-inspector>`
:aspect:`Description`
Identifies the current ``inspector editor`` within the current form element.
The identifier is a text of your choice but must be unique within the optionpath ``TYPO3.CMS.Form.prototypes.<prototypeIdentifier>.formElementsDefinition.<formElementTypeIdentifier>.formEditor.editors``.
@@ -0,0 +1,24 @@
label
-----
:aspect:`Option path`
TYPO3.CMS.Form.prototypes.<prototypeIdentifier>.formElementsDefinition.<formElementTypeIdentifier>.formEditor.editors.*.label
:aspect:`Data type`
string
:aspect:`Needed by`
Backend (form editor)
:aspect:`Mandatory`
Yes
:aspect:`Default value`
Depends (see :ref:`concrete element configuration <typo3.cms.form.prototypes.\<prototypeidentifier>.formelementsdefinition.\<formelementtypeidentifier>-concreteconfigurations>`)
:aspect:`Good to know`
- :ref:`"Inspector"<concepts-formeditor-inspector>`
- :ref:`"Translate form editor settings"<concepts-formeditor-translation-formeditor>`
:aspect:`Description`
The label for this ``inspector editor`` which is shown within the ``inspector component``.
@@ -0,0 +1,25 @@
propertyPath
------------
:aspect:`Option path`
TYPO3.CMS.Form.prototypes.<prototypeIdentifier>.formElementsDefinition.<formElementTypeIdentifier>.formEditor.editors.*.propertyPath
:aspect:`Data type`
string
:aspect:`Needed by`
Backend (form editor)
:aspect:`Mandatory`
Yes
:aspect:`Default value`
Depends (see :ref:`concrete element configuration <typo3.cms.form.prototypes.\<prototypeidentifier>.formelementsdefinition.\<formelementtypeidentifier>-concreteconfigurations>`)
:aspect:`Good to know`
- :ref:`"Inspector"<concepts-formeditor-inspector>`
- :ref:`"JavaScript FormElement model"<apireference-formeditor-basicjavascriptconcepts-formelementmodel>`
:aspect:`Description`
The path to the property of the form element which should be written by this ``inspector editor``.
@@ -0,0 +1,2 @@
The inline HTML template which is used for this inspector editor.
Must be equal to an existing array key within ``TYPO3.CMS.Form.prototypes.<prototypeIdentifier>.formEditor.formEditorPartials`` and must be started with 'Inspector-' by convention.
@@ -0,0 +1,190 @@
.. include:: ../../../../Includes.txt
.. _typo3.cms.form.prototypes.<prototypeidentifier>.formelementsdefinition.advancedpassword:
==================
[AdvancedPassword]
==================
.. _typo3.cms.form.prototypes.<prototypeidentifier>.formelementsdefinition.advancedpassword-properties:
Properties
==========
.. _typo3.cms.form.prototypes.<prototypeIdentifier>.formelementsdefinition.advancedpassword.implementationclassname:
.. include:: AdvancedPassword/implementationClassName.rst
.. _typo3.cms.form.prototypes.<prototypeIdentifier>.formelementsdefinition.advancedpassword.properties.containerclassattribute:
.. include:: AdvancedPassword/properties/containerClassAttribute.rst
.. _typo3.cms.form.prototypes.<prototypeIdentifier>.formelementsdefinition.advancedpassword.properties.elementclassattribute:
.. include:: AdvancedPassword/properties/elementClassAttribute.rst
.. _typo3.cms.form.prototypes.<prototypeIdentifier>.formelementsdefinition.advancedpassword.properties.elementDescription:
.. include:: AdvancedPassword/properties/elementDescription.rst
.. _typo3.cms.form.prototypes.<prototypeIdentifier>.formelementsdefinition.advancedpassword.properties.elementerrorclassattribute:
.. include:: AdvancedPassword/properties/elementErrorClassAttribute.rst
.. _typo3.cms.form.prototypes.<prototypeIdentifier>.formelementsdefinition.advancedpassword.properties.confirmationlabel:
.. include:: AdvancedPassword/properties/confirmationLabel.rst
.. _typo3.cms.form.prototypes.<prototypeIdentifier>.formelementsdefinition.advancedpassword.properties.confirmationclassattribute:
.. include:: AdvancedPassword/properties/confirmationClassAttribute.rst
.. _typo3.cms.form.prototypes.<prototypeIdentifier>.formelementsdefinition.advancedpassword.formeditor:
.. include:: AdvancedPassword/formEditor.rst
.. _typo3.cms.form.prototypes.<prototypeIdentifier>.formelementsdefinition.advancedpassword.formeditor.editors.100:
.. include:: AdvancedPassword/formEditor/editors/100.rst
.. _typo3.cms.form.prototypes.<prototypeIdentifier>.formelementsdefinition.advancedpassword.formeditor.editors.200:
.. include:: AdvancedPassword/formEditor/editors/200.rst
.. _typo3.cms.form.prototypes.<prototypeIdentifier>.formelementsdefinition.advancedpassword.formeditor.editors.230:
.. include:: AdvancedPassword/formEditor/editors/230.rst
.. _typo3.cms.form.prototypes.<prototypeIdentifier>.formelementsdefinition.advancedpassword.formeditor.editors.300:
.. include:: AdvancedPassword/formEditor/editors/300.rst
.. _typo3.cms.form.prototypes.<prototypeIdentifier>.formelementsdefinition.advancedpassword.formeditor.editors.400:
.. include:: AdvancedPassword/formEditor/editors/400.rst
.. _typo3.cms.form.prototypes.<prototypeIdentifier>.formelementsdefinition.advancedpassword.formeditor.editors.700:
.. include:: AdvancedPassword/formEditor/editors/700.rst
.. _typo3.cms.form.prototypes.<prototypeIdentifier>.formelementsdefinition.advancedpassword.formeditor.editors.800:
.. include:: AdvancedPassword/formEditor/editors/800.rst
.. _typo3.cms.form.prototypes.<prototypeIdentifier>.formelementsdefinition.advancedpassword.formeditor.editors.900:
.. include:: AdvancedPassword/formEditor/editors/900.rst
.. _typo3.cms.form.prototypes.<prototypeIdentifier>.formelementsdefinition.advancedpassword.formeditor.editors.9999:
.. include:: AdvancedPassword/formEditor/editors/9999.rst
.. _typo3.cms.form.prototypes.<prototypeIdentifier>.formelementsdefinition.advancedpassword.formeditor.predefineddefaults:
.. include:: AdvancedPassword/formEditor/predefinedDefaults.rst
.. _typo3.cms.form.prototypes.<prototypeIdentifier>.formelementsdefinition.advancedpassword.formeditor.propertycollections.validators.10:
.. include:: AdvancedPassword/formEditor/propertyCollections/validators/10.rst
.. _typo3.cms.form.prototypes.<prototypeIdentifier>.formelementsdefinition.advancedpassword.formeditor.propertycollections.validators.10.identifier:
.. include:: AdvancedPassword/formEditor/propertyCollections/validators/10/identifier.rst
.. _typo3.cms.form.prototypes.<prototypeIdentifier>.formelementsdefinition.advancedpassword.formeditor.propertycollections.validators.10.editors.100:
.. include:: AdvancedPassword/formEditor/propertyCollections/validators/10/editors/100.rst
.. _typo3.cms.form.prototypes.<prototypeIdentifier>.formelementsdefinition.advancedpassword.formeditor.propertycollections.validators.10.editors.9999:
.. include:: AdvancedPassword/formEditor/propertyCollections/validators/10/editors/9999.rst
.. _typo3.cms.form.prototypes.<prototypeIdentifier>.formelementsdefinition.advancedpassword.formeditor.propertycollections.validators.20:
.. include:: AdvancedPassword/formEditor/propertyCollections/validators/20.rst
.. _typo3.cms.form.prototypes.<prototypeIdentifier>.formelementsdefinition.advancedpassword.formeditor.propertycollections.validators.20.identifier:
.. include:: AdvancedPassword/formEditor/propertyCollections/validators/20/identifier.rst
.. _typo3.cms.form.prototypes.<prototypeIdentifier>.formelementsdefinition.advancedpassword.formeditor.propertycollections.validators.20.editors.100:
.. include:: AdvancedPassword/formEditor/propertyCollections/validators/20/editors/100.rst
.. _typo3.cms.form.prototypes.<prototypeIdentifier>.formelementsdefinition.advancedpassword.formeditor.propertycollections.validators.20.editors.9999:
.. include:: AdvancedPassword/formEditor/propertyCollections/validators/20/editors/9999.rst
.. _typo3.cms.form.prototypes.<prototypeIdentifier>.formelementsdefinition.advancedpassword.formeditor.propertycollections.validators.30:
.. include:: AdvancedPassword/formEditor/propertyCollections/validators/30.rst
.. _typo3.cms.form.prototypes.<prototypeIdentifier>.formelementsdefinition.advancedpassword.formeditor.propertycollections.validators.30.identifier:
.. include:: AdvancedPassword/formEditor/propertyCollections/validators/30/identifier.rst
.. _typo3.cms.form.prototypes.<prototypeIdentifier>.formelementsdefinition.advancedpassword.formeditor.propertycollections.validators.30.editors.100:
.. include:: AdvancedPassword/formEditor/propertyCollections/validators/30/editors/100.rst
.. _typo3.cms.form.prototypes.<prototypeIdentifier>.formelementsdefinition.advancedpassword.formeditor.propertycollections.validators.30.editors.200:
.. include:: AdvancedPassword/formEditor/propertyCollections/validators/30/editors/200.rst
.. _typo3.cms.form.prototypes.<prototypeIdentifier>.formelementsdefinition.advancedpassword.formeditor.propertycollections.validators.30.editors.300:
.. include:: AdvancedPassword/formEditor/propertyCollections/validators/30/editors/300.rst
.. _typo3.cms.form.prototypes.<prototypeIdentifier>.formelementsdefinition.advancedpassword.formeditor.propertycollections.validators.30.editors.9999:
.. include:: AdvancedPassword/formEditor/propertyCollections/validators/30/editors/9999.rst
.. _typo3.cms.form.prototypes.<prototypeIdentifier>.formelementsdefinition.advancedpassword.formeditor.propertycollections.validators.40:
.. include:: AdvancedPassword/formEditor/propertyCollections/validators/40.rst
.. _typo3.cms.form.prototypes.<prototypeIdentifier>.formelementsdefinition.advancedpassword.formeditor.propertycollections.validators.40.identifier:
.. include:: AdvancedPassword/formEditor/propertyCollections/validators/40/identifier.rst
.. _typo3.cms.form.prototypes.<prototypeIdentifier>.formelementsdefinition.advancedpassword.formeditor.propertycollections.validators.40.editors.100:
.. include:: AdvancedPassword/formEditor/propertyCollections/validators/40/editors/100.rst
.. _typo3.cms.form.prototypes.<prototypeIdentifier>.formelementsdefinition.advancedpassword.formeditor.propertycollections.validators.40.editors.9999:
.. include:: AdvancedPassword/formEditor/propertyCollections/validators/40/editors/9999.rst
.. _typo3.cms.form.prototypes.<prototypeIdentifier>.formelementsdefinition.advancedpassword.formeditor.propertycollections.validators.50:
.. include:: AdvancedPassword/formEditor/propertyCollections/validators/50.rst
.. _typo3.cms.form.prototypes.<prototypeIdentifier>.formelementsdefinition.advancedpassword.formeditor.propertycollections.validators.50.identifier:
.. include:: AdvancedPassword/formEditor/propertyCollections/validators/50/identifier.rst
.. _typo3.cms.form.prototypes.<prototypeIdentifier>.formelementsdefinition.advancedpassword.formeditor.propertycollections.validators.50.editors.100:
.. include:: AdvancedPassword/formEditor/propertyCollections/validators/50/editors/100.rst
.. _typo3.cms.form.prototypes.<prototypeIdentifier>.formelementsdefinition.advancedpassword.formeditor.propertycollections.validators.50.editors.9999:
.. include:: AdvancedPassword/formEditor/propertyCollections/validators/50/editors/9999.rst
.. _typo3.cms.form.prototypes.<prototypeIdentifier>.formelementsdefinition.advancedpassword.formeditor.propertycollections.validators.60:
.. include:: AdvancedPassword/formEditor/propertyCollections/validators/60.rst
.. _typo3.cms.form.prototypes.<prototypeIdentifier>.formelementsdefinition.advancedpassword.formeditor.propertycollections.validators.60.identifier:
.. include:: AdvancedPassword/formEditor/propertyCollections/validators/60/identifier.rst
.. _typo3.cms.form.prototypes.<prototypeIdentifier>.formelementsdefinition.advancedpassword.formeditor.propertycollections.validators.60.editors.100:
.. include:: AdvancedPassword/formEditor/propertyCollections/validators/60/editors/100.rst
.. _typo3.cms.form.prototypes.<prototypeIdentifier>.formelementsdefinition.advancedpassword.formeditor.propertycollections.validators.60.editors.9999:
.. include:: AdvancedPassword/formEditor/propertyCollections/validators/60/editors/9999.rst
.. _typo3.cms.form.prototypes.<prototypeIdentifier>.formelementsdefinition.advancedpassword.formeditor.propertycollections.validators.70:
.. include:: AdvancedPassword/formEditor/propertyCollections/validators/70.rst
.. _typo3.cms.form.prototypes.<prototypeIdentifier>.formelementsdefinition.advancedpassword.formeditor.propertycollections.validators.70.identifier:
.. include:: AdvancedPassword/formEditor/propertyCollections/validators/70/identifier.rst
.. _typo3.cms.form.prototypes.<prototypeIdentifier>.formelementsdefinition.advancedpassword.formeditor.propertycollections.validators.70.editors.100:
.. include:: AdvancedPassword/formEditor/propertyCollections/validators/70/editors/100.rst
.. _typo3.cms.form.prototypes.<prototypeIdentifier>.formelementsdefinition.advancedpassword.formeditor.propertycollections.validators.70.editors.200:
.. include:: AdvancedPassword/formEditor/propertyCollections/validators/70/editors/200.rst
.. _typo3.cms.form.prototypes.<prototypeIdentifier>.formelementsdefinition.advancedpassword.formeditor.propertycollections.validators.70.editors.300:
.. include:: AdvancedPassword/formEditor/propertyCollections/validators/70/editors/300.rst
.. _typo3.cms.form.prototypes.<prototypeIdentifier>.formelementsdefinition.advancedpassword.formeditor.propertycollections.validators.70.editors.9999:
.. include:: AdvancedPassword/formEditor/propertyCollections/validators/70/editors/9999.rst
.. _typo3.cms.form.prototypes.<prototypeIdentifier>.formelementsdefinition.advancedpassword.formeditor.propertycollections.validators.80:
.. include:: AdvancedPassword/formEditor/propertyCollections/validators/80.rst
.. _typo3.cms.form.prototypes.<prototypeIdentifier>.formelementsdefinition.advancedpassword.formeditor.propertycollections.validators.80.identifier:
.. include:: AdvancedPassword/formEditor/propertyCollections/validators/80/identifier.rst
.. _typo3.cms.form.prototypes.<prototypeIdentifier>.formelementsdefinition.advancedpassword.formeditor.propertycollections.validators.80.editors.100:
.. include:: AdvancedPassword/formEditor/propertyCollections/validators/80/editors/100.rst
.. _typo3.cms.form.prototypes.<prototypeIdentifier>.formelementsdefinition.advancedpassword.formeditor.propertycollections.validators.80.editors.200:
.. include:: AdvancedPassword/formEditor/propertyCollections/validators/80/editors/200.rst
.. _typo3.cms.form.prototypes.<prototypeIdentifier>.formelementsdefinition.advancedpassword.formeditor.propertycollections.validators.80.editors.9999:
.. include:: AdvancedPassword/formEditor/propertyCollections/validators/80/editors/9999.rst
.. _typo3.cms.form.prototypes.<prototypeIdentifier>.formelementsdefinition.advancedpassword.formeditor.label:
.. include:: AdvancedPassword/formEditor/label.rst
.. _typo3.cms.form.prototypes.<prototypeIdentifier>.formelementsdefinition.advancedpassword.formeditor.group:
.. include:: AdvancedPassword/formEditor/group.rst
.. _typo3.cms.form.prototypes.<prototypeIdentifier>.formelementsdefinition.advancedpassword.formeditor.groupsorting:
.. include:: AdvancedPassword/formEditor/groupSorting.rst
.. _typo3.cms.form.prototypes.<prototypeIdentifier>.formelementsdefinition.advancedpassword.formeditor.iconidentifier:
.. include:: AdvancedPassword/formEditor/iconIdentifier.rst
@@ -0,0 +1,245 @@
formEditor
----------
:aspect:`Option path`
TYPO3.CMS.Form.prototypes.<prototypeIdentifier>.formElementsDefinition.AdvancedPassword.formEditor
:aspect:`Data type`
array
:aspect:`Needed by`
Backend (form editor)
:aspect:`Mandatory`
Recommended
:aspect:`Default value (for prototype 'standard')`
.. code-block:: yaml
:linenos:
:emphasize-lines: 2-
AdvancedPassword:
formEditor:
editors:
100:
identifier: header
templateName: Inspector-FormElementHeaderEditor
200:
identifier: label
templateName: Inspector-TextEditor
label: formEditor.elements.FormElement.editor.label.label
propertyPath: label
230:
identifier: elementDescription
templateName: Inspector-TextEditor
label: formEditor.elements.FormElement.editor.elementDescription.label
propertyPath: properties.elementDescription
300:
identifier: confirmationLabel
templateName: Inspector-TextEditor
label: formEditor.elements.AdvancedPassword.editor.confirmationLabel.label
propertyPath: properties.confirmationLabel
400:
identifier: placeholder
templateName: Inspector-TextEditor
label: formEditor.elements.TextMixin.editor.placeholder.label
propertyPath: properties.fluidAdditionalAttributes.placeholder
compatibilityPropertyPath: properties.placeholder
doNotSetIfPropertyValueIsEmpty: true
700:
identifier: gridColumnViewPortConfiguration
templateName: Inspector-GridColumnViewPortConfigurationEditor
label: formEditor.elements.FormElement.editor.gridColumnViewPortConfiguration.label
configurationOptions:
viewPorts:
10:
viewPortIdentifier: xs
label: formEditor.elements.FormElement.editor.gridColumnViewPortConfiguration.xs.label
20:
viewPortIdentifier: sm
label: formEditor.elements.FormElement.editor.gridColumnViewPortConfiguration.sm.label
30:
viewPortIdentifier: md
label: formEditor.elements.FormElement.editor.gridColumnViewPortConfiguration.md.label
40:
viewPortIdentifier: lg
label: formEditor.elements.FormElement.editor.gridColumnViewPortConfiguration.lg.label
numbersOfColumnsToUse:
label: formEditor.elements.FormElement.editor.gridColumnViewPortConfiguration.numbersOfColumnsToUse.label
propertyPath: 'properties.gridColumnClassAutoConfiguration.viewPorts.{@viewPortIdentifier}.numbersOfColumnsToUse'
fieldExplanationText: formEditor.elements.FormElement.editor.gridColumnViewPortConfiguration.numbersOfColumnsToUse.fieldExplanationText
800:
identifier: requiredValidator
templateName: Inspector-RequiredValidatorEditor
label: formEditor.elements.FormElement.editor.requiredValidator.label
validatorIdentifier: NotEmpty
propertyPath: properties.fluidAdditionalAttributes.required
propertyValue: required
900:
identifier: validators
templateName: Inspector-ValidatorsEditor
label: formEditor.elements.TextMixin.editor.validators.label
selectOptions:
10:
value: ''
label: formEditor.elements.TextMixin.editor.validators.EmptyValue.label
20:
value: Alphanumeric
label: formEditor.elements.TextMixin.editor.validators.Alphanumeric.label
30:
value: Text
label: formEditor.elements.TextMixin.editor.validators.Text.label
40:
value: StringLength
label: formEditor.elements.TextMixin.editor.validators.StringLength.label
50:
value: EmailAddress
label: formEditor.elements.TextMixin.editor.validators.EmailAddress.label
60:
value: Integer
label: formEditor.elements.TextMixin.editor.validators.Integer.label
70:
value: Float
label: formEditor.elements.TextMixin.editor.validators.Float.label
80:
value: NumberRange
label: formEditor.elements.TextMixin.editor.validators.NumberRange.label
90:
value: RegularExpression
label: formEditor.elements.TextMixin.editor.validators.RegularExpression.label
9999:
identifier: removeButton
templateName: Inspector-RemoveElementEditor
predefinedDefaults:
properties:
confirmationLabel: formEditor.element.AdvancedPassword.editor.confirmationLabel.predefinedDefaults
propertyCollections:
validators:
10:
identifier: Alphanumeric
editors:
100:
identifier: header
templateName: Inspector-CollectionElementHeaderEditor
label: formEditor.elements.TextMixin.validators.Alphanumeric.editor.header.label
9999:
identifier: removeButton
templateName: Inspector-RemoveElementEditor
20:
identifier: Text
editors:
100:
identifier: header
templateName: Inspector-CollectionElementHeaderEditor
label: formEditor.elements.TextMixin.validators.Text.editor.header.label
9999:
identifier: removeButton
templateName: Inspector-RemoveElementEditor
30:
identifier: StringLength
editors:
100:
identifier: header
templateName: Inspector-CollectionElementHeaderEditor
label: formEditor.elements.TextMixin.validators.StringLength.editor.header.label
200:
identifier: minimum
templateName: Inspector-TextEditor
label: formEditor.elements.MinimumMaximumEditorsMixin.editor.minimum.label
propertyPath: options.minimum
propertyValidators:
10: Integer
additionalElementPropertyPaths:
10: properties.fluidAdditionalAttributes.minlength
300:
identifier: maximum
templateName: Inspector-TextEditor
label: formEditor.elements.MinimumMaximumEditorsMixin.editor.maximum.label
propertyPath: options.maximum
propertyValidators:
10: Integer
additionalElementPropertyPaths:
10: properties.fluidAdditionalAttributes.maxlength
9999:
identifier: removeButton
templateName: Inspector-RemoveElementEditor
40:
identifier: EmailAddress
editors:
100:
identifier: header
templateName: Inspector-CollectionElementHeaderEditor
label: formEditor.elements.TextMixin.validators.EmailAddress.editor.header.label
9999:
identifier: removeButton
templateName: Inspector-RemoveElementEditor
50:
identifier: Integer
editors:
100:
identifier: header
templateName: Inspector-CollectionElementHeaderEditor
label: formEditor.elements.TextMixin.validators.Integer.editor.header.label
9999:
identifier: removeButton
templateName: Inspector-RemoveElementEditor
60:
identifier: Float
editors:
100:
identifier: header
templateName: Inspector-CollectionElementHeaderEditor
label: formEditor.elements.TextMixin.validators.Float.editor.header.label
9999:
identifier: removeButton
templateName: Inspector-RemoveElementEditor
70:
identifier: NumberRange
editors:
100:
identifier: header
templateName: Inspector-CollectionElementHeaderEditor
label: formEditor.elements.TextMixin.validators.NumberRange.editor.header.label
200:
identifier: minimum
templateName: Inspector-TextEditor
label: formEditor.elements.MinimumMaximumEditorsMixin.editor.minimum.label
propertyPath: options.minimum
propertyValidators:
10: Integer
additionalElementPropertyPaths:
10: properties.fluidAdditionalAttributes.min
300:
identifier: maximum
templateName: Inspector-TextEditor
label: formEditor.elements.MinimumMaximumEditorsMixin.editor.maximum.label
propertyPath: options.maximum
propertyValidators:
10: Integer
additionalElementPropertyPaths:
10: properties.fluidAdditionalAttributes.max
9999:
identifier: removeButton
templateName: Inspector-RemoveElementEditor
80:
identifier: RegularExpression
editors:
100:
identifier: header
templateName: Inspector-CollectionElementHeaderEditor
label: formEditor.elements.TextMixin.validators.RegularExpression.editor.header.label
200:
identifier: regex
templateName: Inspector-TextEditor
label: formEditor.elements.TextMixin.validators.RegularExpression.editor.regex.label
fieldExplanationText: formEditor.elements.TextMixin.validators.RegularExpression.editor.regex.fieldExplanationText
propertyPath: options.regularExpression
propertyValidators:
10: NotEmpty
9999:
identifier: removeButton
templateName: Inspector-RemoveElementEditor
label: formEditor.elements.AdvancedPassword.label
group: custom
groupSorting: 500
iconIdentifier: t3-form-icon-advanced-password
@@ -0,0 +1,29 @@
formEditor.editors.100
----------------------
:aspect:`Option path`
TYPO3.CMS.Form.prototypes.<prototypeIdentifier>.formElementsDefinition.AdvancedPassword.formEditor.editors.100
:aspect:`Data type`
array/ :ref:`[FormElementHeaderEditor] <typo3.cms.form.prototypes.\<prototypeidentifier>.formelementsdefinition.\<formelementtypeidentifier>.formeditor.editors.*.formelementheadereditor>`
:aspect:`Needed by`
Backend (form editor)
:aspect:`Mandatory`
Recommended
.. :aspect:`Related options`
@ToDo
:aspect:`Default value (for prototype 'standard')`
.. code-block:: yaml
:linenos:
:emphasize-lines: 4-
AdvancedPassword:
formEditor:
editors:
100:
identifier: header
templateName: Inspector-FormElementHeaderEditor
@@ -0,0 +1,31 @@
formEditor.editors.200
----------------------
:aspect:`Option path`
TYPO3.CMS.Form.prototypes.<prototypeIdentifier>.formElementsDefinition.AdvancedPassword.formEditor.editors.200
:aspect:`Data type`
array/ :ref:`[TextEditor] <typo3.cms.form.prototypes.\<prototypeidentifier>.formelementsdefinition.\<formelementtypeidentifier>.formeditor.editors.*.texteditor>`
:aspect:`Needed by`
Backend (form editor)
:aspect:`Mandatory`
Recommended
.. :aspect:`Related options`
@ToDo
:aspect:`Default value (for prototype 'standard')`
.. code-block:: yaml
:linenos:
:emphasize-lines: 4-
AdvancedPassword:
formEditor:
editors:
200:
identifier: label
templateName: Inspector-TextEditor
label: formEditor.elements.FormElement.editor.label.label
propertyPath: label
@@ -0,0 +1,28 @@
formEditor.editors.230
----------------------
:aspect:`Option path`
TYPO3.CMS.Form.prototypes.<prototypeIdentifier>.formElementsDefinition.AdvancedPassword.formEditor.editors.230
:aspect:`Data type`
array/ :ref:`[TextEditor] <typo3.cms.form.prototypes.\<prototypeidentifier>.formelementsdefinition.\<formelementtypeidentifier>.formeditor.editors.*.texteditor>`
:aspect:`Needed by`
Frontend/ Backend (form editor)
:aspect:`Mandatory`
No
:aspect:`Default value (for prototype 'standard')`
.. code-block:: yaml
:linenos:
:emphasize-lines: 4-
Date:
formEditor:
editors:
230:
identifier: elementDescription
templateName: Inspector-TextEditor
label: formEditor.elements.FormElement.editor.elementDescription.label
propertyPath: properties.elementDescription
@@ -0,0 +1,31 @@
formEditor.editors.300
----------------------
:aspect:`Option path`
TYPO3.CMS.Form.prototypes.<prototypeIdentifier>.formElementsDefinition.AdvancedPassword.formEditor.editors.300
:aspect:`Data type`
array/ :ref:`[TextEditor] <typo3.cms.form.prototypes.\<prototypeidentifier>.formelementsdefinition.\<formelementtypeidentifier>.formeditor.editors.*.texteditor>`
:aspect:`Needed by`
Backend (form editor)
:aspect:`Mandatory`
Recommended
.. :aspect:`Related options`
@ToDo
:aspect:`Default value (for prototype 'standard')`
.. code-block:: yaml
:linenos:
:emphasize-lines: 4-
AdvancedPassword:
formEditor:
editors:
300:
identifier: confirmationLabel
templateName: Inspector-TextEditor
label: formEditor.elements.AdvancedPassword.editor.confirmationLabel.label
propertyPath: properties.confirmationLabel
@@ -0,0 +1,33 @@
formEditor.editors.400
----------------------
:aspect:`Option path`
TYPO3.CMS.Form.prototypes.<prototypeIdentifier>.formElementsDefinition.AdvancedPassword.formEditor.editors.400
:aspect:`Data type`
array/ :ref:`[TextEditor] <typo3.cms.form.prototypes.\<prototypeidentifier>.formelementsdefinition.\<formelementtypeidentifier>.formeditor.editors.*.texteditor>`
:aspect:`Needed by`
Backend (form editor)
:aspect:`Mandatory`
Recommended
.. :aspect:`Related options`
@ToDo
:aspect:`Default value (for prototype 'standard')`
.. code-block:: yaml
:linenos:
:emphasize-lines: 4-
AdvancedPassword:
formEditor:
editors:
400:
identifier: placeholder
templateName: Inspector-TextEditor
label: formEditor.elements.TextMixin.editor.placeholder.label
propertyPath: properties.fluidAdditionalAttributes.placeholder
compatibilityPropertyPath: properties.placeholder
doNotSetIfPropertyValueIsEmpty: true
@@ -0,0 +1,48 @@
formEditor.editors.700
----------------------
:aspect:`Option path`
TYPO3.CMS.Form.prototypes.<prototypeIdentifier>.formElementsDefinition.AdvancedPassword.formEditor.editors.700
:aspect:`Data type`
array/ :ref:`[GridColumnViewPortConfigurationEditor] <typo3.cms.form.prototypes.\<prototypeidentifier>.formelementsdefinition.\<formelementtypeidentifier>.formeditor.editors.*.gridcolumnviewportconfigurationeditor>`
:aspect:`Needed by`
Backend (form editor)
:aspect:`Mandatory`
Recommended
.. :aspect:`Related options`
@ToDo
:aspect:`Default value (for prototype 'standard')`
.. code-block:: yaml
:linenos:
:emphasize-lines: 4-
AdvancedPassword:
formEditor:
editors:
700:
identifier: gridColumnViewPortConfiguration
templateName: Inspector-GridColumnViewPortConfigurationEditor
label: formEditor.elements.FormElement.editor.gridColumnViewPortConfiguration.label
configurationOptions:
viewPorts:
10:
viewPortIdentifier: xs
label: formEditor.elements.FormElement.editor.gridColumnViewPortConfiguration.xs.label
20:
viewPortIdentifier: sm
label: formEditor.elements.FormElement.editor.gridColumnViewPortConfiguration.sm.label
30:
viewPortIdentifier: md
label: formEditor.elements.FormElement.editor.gridColumnViewPortConfiguration.md.label
40:
viewPortIdentifier: lg
label: formEditor.elements.FormElement.editor.gridColumnViewPortConfiguration.lg.label
numbersOfColumnsToUse:
label: formEditor.elements.FormElement.editor.gridColumnViewPortConfiguration.numbersOfColumnsToUse.label
propertyPath: 'properties.gridColumnClassAutoConfiguration.viewPorts.{@viewPortIdentifier}.numbersOfColumnsToUse'
fieldExplanationText: formEditor.elements.FormElement.editor.gridColumnViewPortConfiguration.numbersOfColumnsToUse.fieldExplanationText
@@ -0,0 +1,33 @@
formEditor.editors.800
----------------------
:aspect:`Option path`
TYPO3.CMS.Form.prototypes.<prototypeIdentifier>.formElementsDefinition.AdvancedPassword.formEditor.editors.800
:aspect:`Data type`
array/ :ref:`[RequiredValidatorEditor] <typo3.cms.form.prototypes.\<prototypeidentifier>.formelementsdefinition.\<formelementtypeidentifier>.formeditor.editors.*.requiredvalidatoreditor>`
:aspect:`Needed by`
Backend (form editor)
:aspect:`Mandatory`
Recommended
.. :aspect:`Related options`
@ToDo
:aspect:`Default value (for prototype 'standard')`
.. code-block:: yaml
:linenos:
:emphasize-lines: 4-
AdvancedPassword:
formEditor:
editors:
800:
identifier: requiredValidator
templateName: Inspector-RequiredValidatorEditor
label: formEditor.elements.FormElement.editor.requiredValidator.label
validatorIdentifier: NotEmpty
propertyPath: properties.fluidAdditionalAttributes.required
propertyValue: required
@@ -0,0 +1,58 @@
formEditor.editors.900
----------------------
:aspect:`Option path`
TYPO3.CMS.Form.prototypes.<prototypeIdentifier>.formElementsDefinition.AdvancedPassword.formEditor.editors.900
:aspect:`Data type`
array/ :ref:`[ValidatorsEditor] <typo3.cms.form.prototypes.\<prototypeidentifier>.formelementsdefinition.\<formelementtypeidentifier>.formeditor.editors.*.validatorseditor>`
:aspect:`Needed by`
Backend (form editor)
:aspect:`Mandatory`
Recommended
.. :aspect:`Related options`
@ToDo
:aspect:`Default value (for prototype 'standard')`
.. code-block:: yaml
:linenos:
:emphasize-lines: 4-
AdvancedPassword:
formEditor:
editors:
900:
identifier: validators
templateName: Inspector-ValidatorsEditor
label: formEditor.elements.TextMixin.editor.validators.label
selectOptions:
10:
value: ''
label: formEditor.elements.TextMixin.editor.validators.EmptyValue.label
20:
value: Alphanumeric
label: formEditor.elements.TextMixin.editor.validators.Alphanumeric.label
30:
value: Text
label: formEditor.elements.TextMixin.editor.validators.Text.label
40:
value: StringLength
label: formEditor.elements.TextMixin.editor.validators.StringLength.label
50:
value: EmailAddress
label: formEditor.elements.TextMixin.editor.validators.EmailAddress.label
60:
value: Integer
label: formEditor.elements.TextMixin.editor.validators.Integer.label
70:
value: Float
label: formEditor.elements.TextMixin.editor.validators.Float.label
80:
value: NumberRange
label: formEditor.elements.TextMixin.editor.validators.NumberRange.label
90:
value: RegularExpression
label: formEditor.elements.TextMixin.editor.validators.RegularExpression.label
@@ -0,0 +1,29 @@
formEditor.editors.9999
-----------------------
:aspect:`Option path`
TYPO3.CMS.Form.prototypes.<prototypeIdentifier>.formElementsDefinition.AdvancedPassword.formEditor.editors.9999
:aspect:`Data type`
array/ :ref:`[RemoveElementEditor] <typo3.cms.form.prototypes.\<prototypeidentifier>.formelementsdefinition.\<formelementtypeidentifier>.formeditor.editors.*.removeelementeditor>`
:aspect:`Needed by`
Backend (form editor)
:aspect:`Mandatory`
Recommended
.. :aspect:`Related options`
@ToDo
:aspect:`Default value (for prototype 'standard')`
.. code-block:: yaml
:linenos:
:emphasize-lines: 4-
AdvancedPassword:
formEditor:
editors:
9999:
identifier: removeButton
templateName: Inspector-RemoveElementEditor
@@ -0,0 +1,30 @@
formEditor.group
----------------
:aspect:`Option path`
TYPO3.CMS.Form.prototypes.<prototypeIdentifier>.formElementsDefinition.AdvancedPassword.formEditor.group
:aspect:`Data type`
string
:aspect:`Needed by`
Backend (form editor)
:aspect:`Mandatory`
Recommended
:aspect:`Default value (for prototype 'standard')`
.. code-block:: yaml
:linenos:
:emphasize-lines: 3
AdvancedPassword:
formEditor:
group: custom
:aspect:`Default value`
Depends (see :ref:`concrete element configuration <typo3.cms.form.prototypes.\<prototypeidentifier>.formelementsdefinition.\<formelementtypeidentifier>-concreteconfigurations>`)
:aspect:`Description`
Define within which group within the ``form editor`` "new Element" modal the form element should be shown.
The ``group`` value must be equal to an array key within ``formElementGroups``.
@@ -0,0 +1,29 @@
formEditor.groupSorting
-----------------------
:aspect:`Option path`
TYPO3.CMS.Form.prototypes.<prototypeIdentifier>.formElementsDefinition.AdvancedPassword.formEditor.groupSorting
:aspect:`Data type`
int
:aspect:`Needed by`
Backend (form editor)
:aspect:`Mandatory`
Recommended
:aspect:`Default value (for prototype 'standard')`
.. code-block:: yaml
:linenos:
:emphasize-lines: 3-
AdvancedPassword:
formEditor:
groupSorting: 500
.. :aspect:`Good to know`
ToDo
:aspect:`Description`
The position within the ``formEditor.group`` for this form element.
@@ -0,0 +1,35 @@
formEditor.iconIdentifier
-------------------------
:aspect:`Option path`
TYPO3.CMS.Form.prototypes.<prototypeIdentifier>.formElementsDefinition.AdvancedPassword.formEditor.iconIdentifier
:aspect:`Data type`
string
:aspect:`Needed by`
Backend (form editor)
:aspect:`Mandatory`
Recommended
:aspect:`Default value (for prototype 'standard')`
.. code-block:: yaml
:linenos:
:emphasize-lines: 3-
AdvancedPassword:
formEditor:
iconIdentifier: t3-form-icon-advanced-password
.. :aspect:`Good to know`
ToDo
:aspect:`Description`
An icon identifier which must be registered through the ``\TYPO3\CMS\Core\Imaging\IconRegistry``.
This icon will be shown within
- :ref:`"Inspector [FormElementHeaderEditor]"<typo3.cms.form.prototypes.\<prototypeidentifier>.formelementsdefinition.\<formelementtypeidentifier>.formeditor.editors.*.formelementheadereditor>`.
- :ref:`"Abstract view formelement templates"<apireference-formeditor-stage-commonabstractformelementtemplates>`.
- ``Tree`` component.
- "new element" Modal
@@ -0,0 +1,29 @@
formEditor.label
----------------
:aspect:`Option path`
TYPO3.CMS.Form.prototypes.<prototypeIdentifier>.formElementsDefinition.AdvancedPassword.formEditor.label
:aspect:`Data type`
string
:aspect:`Needed by`
Backend (form editor)
:aspect:`Mandatory`
Yes
:aspect:`Default value (for prototype 'standard')`
.. code-block:: yaml
:linenos:
:emphasize-lines: 3-
AdvancedPassword:
formEditor:
label: formEditor.elements.AdvancedPassword.label
:aspect:`Good to know`
- :ref:`"Translate form editor settings"<concepts-formeditor-translation-formeditor>`
:aspect:`Description`
This label will be shown within the "new element" Modal.
@@ -0,0 +1,31 @@
formEditor.predefinedDefaults
-----------------------------
:aspect:`Option path`
TYPO3.CMS.Form.prototypes.<prototypeIdentifier>.formElementsDefinition.AdvancedPassword.formEditor.predefinedDefaults
:aspect:`Data type`
array
:aspect:`Needed by`
Backend (form editor)
:aspect:`Mandatory`
Recommended
:aspect:`Default value (for prototype 'standard')`
.. code-block:: yaml
:linenos:
:emphasize-lines: 3-
AdvancedPassword:
formEditor:
predefinedDefaults:
properties:
confirmationLabel: formEditor.element.AdvancedPassword.editor.confirmationLabel.predefinedDefaults
.. :aspect:`Good to know`
ToDo
:aspect:`Description`
Defines predefined defaults for form element properties which are prefilled, if the form element is added to a form.
Loaded 100 of 12716 files, more files were not shown because too many files have changed in this diff. Show more