Bug #90083
closedValidators are empty if the same form is rendered multiple times on a page
100%
Description
There are scenarios in which the same form is rendered several times even though it is only output once on the page.
Assuming there is a form plugin with a form with validators on form elements on colPos 10, the following setup would render the plugin twice and output the second rendered plugin.
setup.typoscript
page = PAGE
page {
10 = FLUIDTEMPLATE
10 {
file = EXT:site_package/Resources/Private/Templates/Index.html
variables {
content-col-10 < styles.content.get
content-col-10.select.where = colPos=10
}
}
}
lib.getSomeColPos = CONTENT
lib.getSomeColPos {
table = tt_content
select.where = colPos=10
select.orderBy = sorting
}
EXT:site_package/Resources/Private/Templates/Index.html
<f:cObject typoscriptObjectPath="lib.getSomeColPos"/>
The result is that the validators are missing in the 2nd rendered form.
This is because when the validators are added, a runtime cache is used to prevent validators from being added twice (needed due to internal processes).
When rendering the same 2. form no more validators are added because the form element is not identified clearly enough.
A simple test to fake such a scenario without much effort would be:
setup.typoscript
page = PAGE
page {
10 = FLUIDTEMPLATE
10 {
file = EXT:site_package/Resources/Private/Templates/Index.html
variables {
content < styles.content.get
content-foo < styles.content.get
}
}
}
EXT:site_package/Resources/Private/Templates/Index.html
{content-foo -> f:format.raw()}
or
setup.typoscript
page = PAGE
page {
10 = FLUIDTEMPLATE
10 {
file = EXT:site_package/Resources/Private/Templates/CustomContentElement.html
settings {
persistenceIdentifier = 1:/form_definitions/test.form.yaml
}
extbase.pluginName = Form
extbase.controllerExtensionName = Formframework
extbase.controllerName = FormFrontend
extbase.controllerActionName = perform
}
}
EXT:site_package/Resources/Private/Templates/CustomContentElement.html
<formvh:render persistenceIdentifier="{settings.persistenceIdentifier}" />
<formvh:render persistenceIdentifier="{settings.persistenceIdentifier}" />
1:/form_definitions/test.form.yaml
type: Form
identifier: test
label: test
prototypeName: standard
renderables:
-
type: Page
identifier: page-1
label: Step
renderables:
-
defaultValue: ''
type: Text
identifier: text-1
label: Text 1
-
defaultValue: ''
type: Text
identifier: text-2
label: Text 2
properties:
fluidAdditionalAttributes:
required: required
validators:
-
identifier: NotEmpty
-
defaultValue: ''
type: Text
identifier: text-3
label: Text 3
properties:
fluidAdditionalAttributes:
required: required
validators:
-
identifier: NotEmpty
-
type: SummaryPage
identifier: summarypage-1
label: 'Summary step'
result:
Files
Updated by Ralf Zimmermann almost 5 years ago
- Related to Bug #88730: Validators of a field with the same identifier is working only once on a page added
Updated by Ralf Zimmermann almost 5 years ago
- Related to Bug #89236: TYPO3 Forms Extension: Required - Indicators (*) are not shown added
Updated by Gerrit Code Review almost 5 years ago
- Status changed from New to Under Review
Patch set 1 for branch master of project Packages/TYPO3.CMS has been pushed to the review server.
It is available at https://review.typo3.org/c/Packages/TYPO3.CMS/+/62840
Updated by Gerrit Code Review almost 5 years ago
Patch set 1 for branch 9.5 of project Packages/TYPO3.CMS has been pushed to the review server.
It is available at https://review.typo3.org/c/Packages/TYPO3.CMS/+/63230
Updated by Ralf Zimmermann almost 5 years ago
- Status changed from Under Review to Resolved
- % Done changed from 0 to 100
Applied in changeset dbaa9dbc910fa72b69dd3af8afd558cb5e9004ae.
Updated by Gerrit Code Review almost 5 years ago
- Status changed from Resolved to Under Review
Patch set 2 for branch 9.5 of project Packages/TYPO3.CMS has been pushed to the review server.
It is available at https://review.typo3.org/c/Packages/TYPO3.CMS/+/63230
Updated by Ralf Zimmermann almost 5 years ago
- Status changed from Under Review to Resolved
Applied in changeset 10b5e6e9e5f62f5b075ee2e718697d2e84d90925.