LIA Form 

Extends the core form extension and provide some new form elements.

Installation 

Explains how to install this extension in Composer-based and Classic TYPO3 installations.

Configuration 

Learn how to configure this extension.

Events 

A list of all provided events and how-to use them.

EventListener 

A list of all provided events and how-to use them.

Schedule tasks 

A list of all provided Schedule tasks.

Form elements 

A list of all provided Form elements.

ViewHelpers 

All the provided ViewHelper.

Frequently Asked Questions (FAQ) 

These questions have been frequently asked.

How to get help 

Learn where to get help and how to report issues you found.

Configuration 

This extension provides also an example configuration.

Override configuration 

The YAML configuration of this extension is registered via the form framework's auto-discovery convention (Configuration/Form/<SetName>/config.yaml, available since TYPO3 v14.2). Two configuration sets are provided:

  • lia/lia-form-setup (priority 100) — base setup (LiaFormSetup.yaml)
  • lia/lia-form-elements (priority 199) — form elements and finishers

To override the default yaml configuration create your own configuration set in your extension. Use a priority between 101 and 198 so it loads after the base setup and before the element definitions.

EXT:my_extension/Configuration/Form/MyExtensionForms/config.yaml
name: my-vendor/my-extension-forms
priority: 150

imports:
  - { resource: 'EXT:my_extension/Configuration/Yaml/CustomFormSetup.yaml' }
Copied!

No TypoScript registration is required — the set is discovered automatically in frontend and backend.

Yaml Configuration 

If you do not have a CustomFormSetup.yaml then create it in the path of the settings and past the following snippet. Here you have to adjust the path to your extension.

EXT:my_extension/Configuration/Yaml/CustomFormSetup.yaml imports: - { resource: "./Form/Elements.yaml" }
TYPO3:
  CMS:
    Form:
      persistenceManager:
        allowSaveToExtensionPaths: true
        allowedFileMounts:
          100: 1:/forms/
        allowedExtensionPaths:
          10: EXT:my_extension/Resource/Private/Extensions/LiaForm/
      prototypes:
        standard:
          formEditor:
            formEditorFluidConfiguration:
              partialRootPaths:
                20: "EXT:lia_form/Resources/Private/Backend/Partials/FormEditor/"
                30: "EXT:my_extension/Resources/Private/Extensions/LiaForm/Backend/Partials/FormEditor/"
          formElementsDefinition:
            Form:
              renderingOptions:
                templateRootPaths:
                  100: "EXT:lia_form/Resources/Private/Frontend/Templates/"
                  200: "EXT:my_extension/Resources/Private/Extensions/LiaForm/Frontend/Templates/"
                partialRootPaths:
                  100: "EXT:lia_form/Resources/Private/Frontend/Partials/"
                  200: "EXT:my_extension/Resources/Private/Extensions/LiaForm/Frontend/Partials/"
                translation:
                  translationFiles:
                    # translation files for the frontend
                    10: "EXT:form/Resources/Private/Language/locallang.xlf"
                    20: "EXT:lia_form/Resources/Private/Language/locallang_forms.xlf"
                    30: "EXT:my_extension/Resources/Private/Extensions/LiaForm/Language/locallang_forms.xlf"
            GridRow:
              properties:
                elementClassAttribute: "container"
                gridColumnClassAutoConfiguration:
                  gridSize: 24
                  viewPorts:
                    sd:
                      classPattern: "grid__col-sd-{@numbersOfColumnsToUse}"
                    md:
                      classPattern: "grid__col-md-{@numbersOfColumnsToUse}"
                    xs:
                      classPattern: "grid__col-xs-{@numbersOfColumnsToUse}"
                    sm:
                      classPattern: "grid__col-sm-{@numbersOfColumnsToUse}"
                    lg:
                      classPattern: "grid__col-lg-{@numbersOfColumnsToUse}"
            ### FORM ELEMENTS: UPLOADS ###
            FileUpload:
              formEditor:
                editors:
                  300:
                    selectOptions:
                      80:
                        value: "application/zip"
                        label: "Documents (zip)"
                      90:
                        value: "application/rar"
                        label: "Documents (rar)"
                  400:
                    selectOptions:
                      30:
                        value: "typo3temp/myFormUploadDestination/"
                        label: "typo3temp/myFormUploadDestination/"
                      30:
                        value: "typo3temp/myFormUploadDestination2/"
                        label: "typo3temp/myFormUploadDestination2/"
Copied!

Example configuration 

In the root of this extension you find an __EXAMPLE__ folder. This folder contains all the nessesary configuration for this extension and a little bit more.

You can copy the example configuration into your sitepackage-extension and adjust some paths and values in it to get it up and running.

YAML configuration 

In the EXT:lia_form/__EXAMPLE__/my_extension/Configuration/Yaml you find the form configuration files.

CustomFormSetup.yaml 

This file override and extends the default form configuration. It extends the root path configuration of the form. After you copied this file into your sitepackage-extension you have to adjust the extension name in the paths. All the paths contains the placeholder my_extension.

Form prototypes 

In this file is also a register of three prototype form configurations. Yo use the provided prototypes copy them in the same directory where you pasted the CustomFormSetup.yaml in.

If you do not need them you can delete this part of code out this file.

Prototype registration
formManager:
  selectablePrototypesConfiguration:
    100:
      newFormTemplates:
        300:
          templatePath: "EXT:lia_form/Resources/Private/Backend/Templates/FormEditor/Yaml/NewForms/DefaultContactForm.yaml"
          label: "LIA Default contact form"
        301:
          templatePath: "EXT:my_extension/Configuration/Yaml/ContactFormWithFileUPloadPrototype.yaml"
          label: "LIA Contact form with file upload"
        302:
          templatePath: "EXT:my_extension/Configuration/Yaml/ContactFormWithImageUploadPrototype.yaml"
          label: "LIA Contact form with image upload"
Copied!

Elements.yaml 

This file extends all the form elements with a small grid configuration.

TypoScript configuration 

In the EXT:lia_form/__EXAMPLE__/my_extension/Configuration/TypoScript folder you find an example configuration. The subfolder Extensions contains the typoscript to override the default lia_form configuration. You can copy this configuration into your sitepackage-extension and load it.

Constants.typoscript 

In this file are the constants to set the template root paths of the form extension.

Setup.typoscript 

This setup loads the default form framework TypoScript. The form YAML configurations themselves are registered via auto-discovery — see EXT:lia_form/__EXAMPLE__/my_extension/Configuration/Form/MyExtensionForms/config.yaml for the project-specific configuration set (priority 150).

Resources 

In the folder EXT:lia_form/__EXAMPLE__/my_extension/Resources you find all the template, partials and translations which are used by this example configuration. You can copy them into sitepackage-extension and modify them. If the Folder Structure does not match the folder structure of your sitepackage-extension, you have to adjust the paths in the configurations.

Events 

This extension provide events which can be subscribed to modify the default functionality.

BeforeFormDefinitionCreatesEvent 

This event is dispatched in a custom FormFactory provided by this extension.

ApplyCustomSettingsToViewEvent 

This event is dispatched in EmailFinisher of this extension.

SetDefaultValueEvent 

Set default values of field in EmailFinisher.

BeforePhoneAreaCodeInitializeEvent 

Replace the area code list of the PhoneAndAreaCode element.

RenderFinisherPreviewEvent 

Provide a custom page module preview for your own finisher types.

AllInOneEventListenerClass 

How to register all events in just one class.

BeforeFormDefinitionCreatesEvent 

This event is dispatched in the ExtendedArrayFormFactory and provide the possibility to manipulate the form configuration before FormDefinition class is created.

Attributes 

formDefintionConfigArray

formDefintionConfigArray
Type
array
Required

true

This is the configuration array of the form definition.

request

request
Type
ServerRequestInterface
Required

true

This is the current server request object.

renderedForms

renderedForms
Type
integer
Required

true

This is the count of rendered form on the current page.

Subscribe this event 

First create an EventListener class in your Extension. It may look like this.

EXT:my_extension/Classes/EventListeners/BeforeFormDefinitionCreatesEventListener.php
<?php
declare(strict_types=1);

namespace MY\MyExtension\EventListener;

use LIA\LiaForm\Event\BeforeFormDefinitionCreatesEvent;

final class BeforeFormDefinitionCreatesEventListener {

    /**
    * Manipulate the form configuration by a custom logic.
    *
    * @param BeforeFormDefinitionCreatesEvent $event
    * @return void
    */
    public function __invoke(BeforeFormDefinitionCreatesEvent $event): void
    {
        // do some crazy stuff ...

        $event->setFormDefinitionConfigArray($formconfiguration);
    }
}
Copied!

Now register this EventListener in your Services.yaml.

EXT:my_extension/Configuration/Services.yaml
MY\MyExtension\EventListener\BeforeFormDefinitionCreatesEventListener:
  tags:
    - name: event.listener
      identifier: 'my-extension/before-form-definition-creates-event'
      event: LIA\LiaForm\Event\BeforeFormDefinitionCreatesEvent
Copied!

ApplyCustomSettingsToViewEvent 

Allows you to add your own settings to the view.

Attributes 

emailView

emailView
Type
TYPO3CMSCoreMailFluidEmail
Required

true

This is the view which can be extended with your custom settings.

Subscribe this event 

First create an EventListener class in your Extension. It may look like this.

EXT:my_extension/Classes/EventListeners/ApplyCustomSettingsToViewEventListener.php
<?php
declare(strict_types=1);

namespace MY\MyExtension\EventListener;

use LIA\LiaForm\Event\ApplyCustomSettingsToViewEvent;

final class ApplyCustomSettingsToViewEventListener {

    /**
    * Manipulate the form configuration by a custom logic.
    *
    * @param ApplyCustomSettingsToViewEvent $event
    * @return void
    */
    public function __invoke(ApplyCustomSettingsToViewEvent $event): void
    {
        // do some crazy stuff ...

        $event->setEmailView($emailView);
    }
}
Copied!

Now register this EventListener in your Services.yaml.

EXT:my_extension/Configuration/Services.yaml
MY\MyExtension\EventListener\ApplyCustomSettingsToViewEventListener:
  tags:
    - name: event.listener
      identifier: 'my-extension/apply-custom-settings-to-view-event'
      event: LIA\LiaForm\Event\ApplyCustomSettingsToViewEvent
Copied!

SetDefaultValueEvent 

This Event allows you to set field with default values if needed. This event is dispatched in the EmailFinisher in the processView function.

Attributes 

formRuntime

formRuntime
Type
TYPO3CMSFormDomainRuntimeFormRuntime
Required

true

The send formRuntime.

shortFinisherIdentifier

shortFinisherIdentifier
Type
string
Required

true

The identifier of the called EmailFinisher (EmailToReceiver or EmailToSender).

Subscribe this event 

First create an EventListener class in your Extension. It may look like this.

EXT:my_extension/Classes/EventListeners/SetDefaultValueEventListener.php
<?php
declare(strict_types=1);

namespace MY\MyExtension\EventListener\Finisher;

use LIA\LiaForm\Event\Finisher\SetDefaultValueEvent;
use TYPO3\CMS\Core\Utility\StringUtility;

final class SetDefaultValueEventListener {

    /**
    * Manipulate the form configuration by a custom logic.
    *
    * @param SetDefaultValueEvent $event
    * @return void
    */
    public function __invoke(SetDefaultValueEvent $event): void
    {
        // do some crazy stuff ...

        $event->setEmailView($emailView);
    }
}
Copied!

Now register this EventListener in your Services.yaml.

EXT:my_extension/Configuration/Services.yaml
MY\MyExtension\EventListener\Finisher\SetDefaultValueEventListener:
  tags:
    - name: event.listener
      identifier: 'my-extension/finisher-set-default-values-event'
      event: LIA\LiaForm\Event\Finisher\SetDefaultValueEvent
Copied!

BeforePhoneAreaCodeInitializeEvent 

This event is dispatched when the PhoneAndAreaCode form element is initialized. It provides the possibility to replace the default area code list (EXT:lia_form/Configuration/Data/PhoneAreaCodeList.json) with a custom JSON data source.

Attributes 

dataSourcePath

dataSourcePath
Type
string
Required

true

Path to a JSON file containing the area code list. EXT: paths are resolved automatically.

Subscribe this event 

First create an EventListener class in your Extension. It may look like this.

EXT:my_extension/Classes/EventListeners/BeforePhoneAreaCodeInitializeEventListener.php
<?php
declare(strict_types=1);

namespace MY\MyExtension\EventListener;

use LIA\LiaForm\Event\BeforePhoneAreaCodeInitializeEvent;

final class BeforePhoneAreaCodeInitializeEventListener {

    /**
    * Set a custom area code list.
    *
    * @param BeforePhoneAreaCodeInitializeEvent $event
    * @return void
    */
    public function __invoke(BeforePhoneAreaCodeInitializeEvent $event): void
    {
        $event->setDataSourcePath('EXT:my_extension/Configuration/Data/MyAreaCodeList.json');
    }
}
Copied!

Now register this EventListener in your Services.yaml.

EXT:my_extension/Configuration/Services.yaml
MY\MyExtension\EventListener\BeforePhoneAreaCodeInitializeEventListener:
  tags:
    - name: event.listener
      identifier: 'my-extension/before-phone-area-code-initialize-event'
      event: LIA\LiaForm\Event\BeforePhoneAreaCodeInitializeEvent
Copied!

RenderFinisherPreviewEvent 

This event is dispatched once per finisher while the page module preview of a form_formframework content element is rendered (in the finisher overview provided by this extension's FormPreviewRenderer). It lets an extension supply a custom preview for its own finisher types. If a listener handles the event, its HTML is used and the built-in rendering for that finisher is skipped.

Attributes 

identifier

identifier
Type
string

The finisher identifier (e.g. EmailToReceiver or your own MyCustomFinisher). Read-only, via getIdentifier().

options

options
Type
array

The finisher options from the YAML form definition. Read-only, via getOptions().

flexFormFinisher

flexFormFinisher
Type
array

The finisher settings coming from the content element's FlexForm overrides. Read-only, via getFlexFormFinisher().

overrideFinishers

overrideFinishers
Type
bool

Whether FlexForm overrides are enabled for this element. Read-only, via isOverrideFinishers().

previewHtml

previewHtml
Type
string

Set via setPreviewHtml(). Calling it marks the event as handled (isHandled()), so the default rendering is skipped for this finisher.

Subscribe this event 

Create an EventListener in your extension that reacts to your own finisher identifier and returns its preview markup.

EXT:my_extension/Classes/EventListener/RenderFinisherPreviewEventListener.php
<?php
declare(strict_types=1);

namespace MY\MyExtension\EventListener;

use LIA\LiaForm\Event\RenderFinisherPreviewEvent;

final class RenderFinisherPreviewEventListener
{
    public function __invoke(RenderFinisherPreviewEvent $event): void
    {
        if ($event->getIdentifier() !== 'MyCustomFinisher') {
            return;
        }

        $options = $event->getOptions();
        $event->setPreviewHtml(
            '<em>My custom finisher → ' . htmlspecialchars((string)($options['target'] ?? '')) . '</em>'
        );
    }
}
Copied!

Register the listener in your Services.yaml.

EXT:my_extension/Configuration/Services.yaml
MY\MyExtension\EventListener\RenderFinisherPreviewEventListener:
  tags:
    - name: event.listener
      identifier: 'my-extension/render-finisher-preview-event'
      event: LIA\LiaForm\Event\RenderFinisherPreviewEvent
Copied!

All in one EventListener Class 

You can also listen to all events in one class. Here you have to use your own functions. In this example you see a class containing all Events at once.

EXT:my_extension/Classes/EventListeners/LiaFormEventListeners.php
<?php
declare(strict_types=1);

namespace MY\MyExtension\EventListener\Finisher;

use LIA\LiaForm\Event\ApplyCustomSettingsToViewEvent;
use LIA\LiaForm\Event\BeforeFormDefinitionCreatesEvent;
use LIA\LiaForm\Event\Finisher\SetDefaultValueEvent;

final class LiaFormEventListeners
{
    /**
    * Manipulate the FormRuntime to set default field values.
    *
    * @param SetDefaultValueEvent $event
    * @return void
    */
    public function finisherSetDefaultValueEventListener(SetDefaultValueEvent $event): void
    {
        // do some crazy stuff ...

        $event->setFormRuntime($formRuntime);
    }

    /**
    * Manipulate the form configuration by a custom logic.
    *
    * @param ApplyCustomSettingsToViewEvent $event
    * @return void
    */
    public function applyCustomSettingsToViewEventListener(ApplyCustomSettingsToViewEvent $event): void
    {
        // do some crazy stuff ...

        $event->setEmailView($emailView);
    }

    /**
    * Manipulate the form configuration by a custom logic.
    *
    * @param BeforeFormDefinitionCreatesEvent $event
    * @return void
    */
    public function beforeFormDefinitionCreatesEventListener(BeforeFormDefinitionCreatesEvent $event): void
    {
        // do some crazy stuff ...

        $event->setFormDefinitionConfigArray($formconfiguration);
    }
}
Copied!

Your event registration would look like this.

EXT:my_extension/Configuration/Services.yaml
MY\MyExtension\EventListener\Finisher\SetDefaultValueEventListener:
  tags:
    - name: event.listener
      identifier: 'my-extension/finisher-set-default-values-event'
      event: LIA\LiaForm\Event\Finisher\SetDefaultValueEvent
      method: 'finisherSetDefaultValueEventListener'
    - name: event.listener
      identifier: 'my-extension/apply-custom-settings-to-view-event'
      event: LIA\LiaForm\Event\ApplyCustomSettingsToViewEvent
      method: 'applyCustomSettingsToViewEventListener'
    - name: event.listener
      identifier: 'my-extension/before-form-definition-creates-event'
      event: LIA\LiaForm\Event\BeforeFormDefinitionCreatesEvent
      method: 'beforeFormDefinitionCreatesEventListener'
Copied!

Schedule tasks 

This extension provides some Tasks.

ClearFolderTask 

This task deletes old files from a given folder.

ClearFolderTask 

This task delete old file that are uploaded by your forms. You can define how old the files can get. And all older files will be deleted.

Additional settings 

liaHoursToLive

liaHoursToLive
Type
integer
Default
1

Define the maximum live time of uploaded files.

liaFolderToClear

liaFolderToClear
Type
integer
Default
1

The folder that has to be cleaned.

EventListener 

This extension listen to some events to modify the core functionality. Here you see a list of EventListeners that are subscribed by this extension.

AfterFlexFormDataStructureParsedEvent 

This event extends the default FlexForm of the core with a custom css field. Here you can set a custom css class on the current form. Please register your EventListener if you have also extend this FlexForm. This Subscriber is registered by the lia-form/flex-form-extension. You can aline your EventListener after this event by adding the following tag after: 'lia-form/flex-form-extension'

DataProtection 

This is a checkbox field which provides a reference to the privacy policy with a link to the corresponding page.

label

label
Type
string
propertyPath
label

The field label

elementDescription

elementDescription
Type
string
propertyPath
properties.elementDescription

The field description.

pageUid

pageUid
Type
Typo3WinBrowserEditor
propertyPath
renderingOptions.pageUid

A page selection to choose the page with the privacy policy.

text

text
Type
string
propertyPath
properties.text

This text is used as label for the checkbox. Use %pagelink_text% as placeholder for the link.

linktext

linktext
Type
string
propertyPath
properties.linktext

This text is used for the link to the selected page.

gridColumnViewPortConfiguration

gridColumnViewPortConfiguration
Type
GridColumnViewPortConfigurationEditor

Grid settings.

requiredValidator

requiredValidator
Type
RequiredValidatorEditor
propertyPath
properties.fluidAdditionalAttributes.required

Field validation settings.

HtmlCode 

This field enables the maintenance of an HTML element in the form.

label

label
Type
string
propertyPath
label

The field label

elementDescription

elementDescription
Type
string
propertyPath
properties.elementDescription

The field description.

text

text
Type
string
propertyPath
properties.text

The field description.

font

font
Type
string
propertyPath
properties.font

Selection of the html tag.

align

align
Type
string
propertyPath
properties.align

Selection of the text alignment.

gridColumnViewPortConfiguration

gridColumnViewPortConfiguration
Type
GridColumnViewPortConfigurationEditor

Grid settings.

requiredValidator

requiredValidator
Type
RequiredValidatorEditor
propertyPath
properties.fluidAdditionalAttributes.required

Field validation settings.

LiaDatePicker 

A date field prepared for use with an external date picker library. The element renders a plain text field with the additional CSS class have-datepicker.

label

label
Type
string
propertyPath
label

The field label

elementDescription

elementDescription
Type
string
propertyPath
properties.elementDescription

The field description.

gridColumnViewPortConfiguration

gridColumnViewPortConfiguration
Type
GridColumnViewPortConfigurationEditor

Grid settings.

requiredValidator

requiredValidator
Type
RequiredValidatorEditor
propertyPath
properties.fluidAdditionalAttributes.required

Field validation settings.

LiaParameterHidden 

A hidden field that can be filled with a URL parameter, e.g. to track campaign parameters together with a form submission. The element renders a hidden input with the additional attribute data-url-parameter-tracker.

label

label
Type
string
propertyPath
label

The field label

elementDescription

elementDescription
Type
string
propertyPath
properties.elementDescription

The field description.

gridColumnViewPortConfiguration

gridColumnViewPortConfiguration
Type
GridColumnViewPortConfigurationEditor

Grid settings.

requiredValidator

requiredValidator
Type
RequiredValidatorEditor
propertyPath
properties.fluidAdditionalAttributes.required

Field validation settings.

LiaSiteTitle 

This field is hidden and automatic filled with the current page title.

label

label
Type
string
propertyPath
label

The field label

elementDescription

elementDescription
Type
string
propertyPath
properties.elementDescription

The field description.

text

text
Type
string
propertyPath
properties.text

The field description.

gridColumnViewPortConfiguration

gridColumnViewPortConfiguration
Type
GridColumnViewPortConfigurationEditor

Grid settings.

requiredValidator

requiredValidator
Type
RequiredValidatorEditor
propertyPath
properties.fluidAdditionalAttributes.required

Field validation settings.

PhoneAndAreaCode 

A phone number field with a selectable international area code. The field renders a select box containing all international dial codes (e.g. +49) next to a text field for the phone number itself.

The list of area codes is loaded from EXT:lia_form/Configuration/Data/PhoneAreaCodeList.json. Each entry consists of a country name, the dial code and the ISO country code:

{
  "name": "Germany",
  "dial_code": "+49",
  "code": "DE"
}
Copied!

To use a custom data source, subscribe to the BeforePhoneAreaCodeInitializeEvent and set your own path to a JSON file with the same structure.

label

label
Type
string
propertyPath
label

The field label

elementDescription

elementDescription
Type
string
propertyPath
properties.elementDescription

The field description.

areaCodeClass

areaCodeClass
Type
string
propertyPath
properties.areaCodeClass

CSS class added to the area code select box.

class

class
Type
string
propertyPath
properties.class

CSS class added to the phone number text field.

gridColumnViewPortConfiguration

gridColumnViewPortConfiguration
Type
GridColumnViewPortConfigurationEditor

Grid settings.

requiredValidator

requiredValidator
Type
RequiredValidatorEditor
propertyPath
properties.fluidAdditionalAttributes.required

Field validation settings.

Form.uploadedResource ViewHelper <liaform:form.uploadedResource> 

This ViewHelper makes the specified Image object available for its childNodes. In case the form is redisplayed because of validation errors, a previously uploaded image will be correctly used.

Scope: frontend

Example 

<liaform:form.uploadedResource property="{element.identifier}" as="image" id="{element.uniqueIdentifier}" class="{element.properties.elementClassAttribute}" errorClass="{element.properties.elementErrorClassAttribute}" additionalAttributes="{formvh:translateElementProperty(element: element, property: 'fluidAdditionalAttributes')}" accept="{element.properties.allowedMimeTypes}"  multiple="1">
    <f:if condition="{image}">
        <div id="{element.uniqueIdentifier}-preview">
            <a href="{f:uri.image(image: image, maxWidth: element.properties.imageLinkMaxWidth)}" class="{element.properties.elementClassAttribute}" >
                <f:image image="{image}" maxWidth="{element.properties.imageMaxWidth}" maxHeight="{element.properties.imageMaxHeight}" alt="{formvh:translateElementProperty(element: element, property: 'altText')}" />
            </a>
        </div>
    </f:if>
</liaform:form.uploadedResource>
Copied!

Arguments

The following arguments are available for the form.uploadedResource ViewHelper:

accept

accept
Type
array
Default
array ( )
Values for the accept attribute

additionalAttributes

additionalAttributes
Type
array
Additional tag attributes. They will be added directly to the resulting HTML tag.

aria

aria
Type
array
Additional aria-* attributes. They will each be added with a "aria-" prefix.

as

as
Type
string
The name of the variable.

data

data
Type
array
Additional data-* attributes. They will each be added with a "data-" prefix.

errorClass

errorClass
Type
string
Default
'f3-form-error'
CSS class to set if there are errors for this ViewHelper

name

name
Type
string
Name of input tag

property

property
Type
string
Name of Object Property. If used in conjunction with <f:form object="...">, the "name" property will be ignored, while "value" can be used to specify a default field value instead of the object property value.

value

value
Type
mixed
Value of input tag

Format.replace ViewHelper <liaform:format.replace> 

This ViewHelper replace a substring of a give content by given string. This ViewHelper is used in the DataProtection form field to set the link to the configured privacy page.

Example 

{f:link.typolink(parameter: element.renderingOptions.pageUid) -> f:variable(name: 'link')} {formvh:translateElementProperty(element: element, property: 'label') -> f:variable(name: 'translation')}
<f:format.raw>
  <liaform:format.replace substring="%s" content="{translation}" replacement="{link}" />
</f:format.raw>
Copied!

Arguments

The following arguments are available for the format.replace ViewHelper:

caseSensitive

caseSensitive
Type
boolean
Default
true
If true, perform case-sensitive replacement

content

content
Type
string
Content in which to perform replacement

count

count
Type
integer
Maximum number of times to perform replacement

replacement

replacement
Type
string
Default
''
Replacement to insert

substring

substring
Type
string
Required
1
Substring to replace

Frequently Asked Questions (FAQ) 

See chapter Installation.

See chapter Configuration.

Yes, see chapter Events.

Yes, see chapter EventListener.

See chapter Where to get help.