用错别字覆盖单个表单的 YAML 文件
Overwrite YAML-Files of individual forms with typoscript
我尝试了几个小时来覆盖带有打字错误的表单的 yaml 文件中的一些参数。我在手册中找到了这段话:
但我无法让它工作。另外我找不到调试我的 yaml 定义的方法。我用
尝试了提示
typo3/sysext/form/Classes/Mvc/Configuration/ConfigurationManager.php::getConfigurationFromYamlFile()
但这只显示了原型而不是表单。
所以我有一些问题:
- 是否可以调试表单的 yaml 和 typoscript 组合代码?
- 手册中描述的 formDefinitionOverrides 是否真的有效 (TYPO3 9.5)
- 什么是? yaml 文件中我的表单的标识符或前端中带有内容元素编号的标识符 (myFormIdentifier-UidOfMyContentElement)
- 是否可以使用标识符而不是数组索引? (多个嵌套数组索引最多 10 个或更多条目让我抓狂。
谢谢!
是的,它确实有效。这是一个例子。
本例中的标识符是“myformEN”。
如果没有这种嵌套数组语法,您将无法使用 TypoScript。
TypoScript
plugin.tx_form{
settings{
yamlConfigurations.100 = EXT:user_site/Configuration/Form/CustomFormSetup.yaml
formDefinitionOverrides {
# identifier of form
myformEN {
renderables {
# first page of form
0 {
renderables {
# number of element in form
0 {
# another level (because of "Grid: Row")
renderables {
0 {
defaultValue = TEXT
defaultValue.value = My Text
}
}
}
}
}
}
}
}
}
}
myformEN.form.yaml
renderingOptions:
submitButtonLabel: 'submit'
identifier: myformEN
label: 'Inquiry'
type: Form
prototypeName: standard
[…]
renderables:
-
renderingOptions:
previousButtonLabel: ''
nextButtonLabel: Next
identifier: page-1
label: ''
type: Page
renderables:
-
type: GridRow
identifier: gridrow-1
label: 'Grid: Row'
renderables:
-
defaultValue: 'this will be overwritten by TypoScript'
type: Text
identifier: article
label: Article
-
defaultValue: ''
type: Text
identifier: text-2
label: 'Amount'
[…]
我找到了如何使用标签而不是使用编号数组:
yaml:
type: Form
identifier: test1
prototypeName: standard
renderables:
page1:
renderingOptions:
previousButtonLabel: 'Previous step'
nextButtonLabel: 'Next step'
type: Page
identifier: page-1
label: Step
renderables:
field1:
defaultValue: ''
type: Text
identifier: email-1
label: 'My Email address'
properties:
validationErrorMessages:
-
code: 1221559976
message: öasdlkhfö
和打字错误:
plugin.tx_form{
settings{
formDefinitionOverrides {
# identifier of form
test1 {
renderables {
# first page of form
page1 {
renderables {
field1 {
label = TEXT
label.value = Eine ganze andere E-Mailaddresse
}
}
}
}
}
}
}
}
效果很好,但您不能混合使用 - 一个级别中的所有文件都必须有标签。这是有道理的,因为不可能在 php 数组中混合索引和键。
我尝试了几个小时来覆盖带有打字错误的表单的 yaml 文件中的一些参数。我在手册中找到了这段话:
但我无法让它工作。另外我找不到调试我的 yaml 定义的方法。我用
尝试了提示 typo3/sysext/form/Classes/Mvc/Configuration/ConfigurationManager.php::getConfigurationFromYamlFile()
但这只显示了原型而不是表单。
所以我有一些问题:
- 是否可以调试表单的 yaml 和 typoscript 组合代码?
- 手册中描述的 formDefinitionOverrides 是否真的有效 (TYPO3 9.5)
- 什么是? yaml 文件中我的表单的标识符或前端中带有内容元素编号的标识符 (myFormIdentifier-UidOfMyContentElement)
- 是否可以使用标识符而不是数组索引? (多个嵌套数组索引最多 10 个或更多条目让我抓狂。
谢谢!
是的,它确实有效。这是一个例子。
本例中的标识符是“myformEN”。
如果没有这种嵌套数组语法,您将无法使用 TypoScript。
TypoScript
plugin.tx_form{
settings{
yamlConfigurations.100 = EXT:user_site/Configuration/Form/CustomFormSetup.yaml
formDefinitionOverrides {
# identifier of form
myformEN {
renderables {
# first page of form
0 {
renderables {
# number of element in form
0 {
# another level (because of "Grid: Row")
renderables {
0 {
defaultValue = TEXT
defaultValue.value = My Text
}
}
}
}
}
}
}
}
}
}
myformEN.form.yaml
renderingOptions:
submitButtonLabel: 'submit'
identifier: myformEN
label: 'Inquiry'
type: Form
prototypeName: standard
[…]
renderables:
-
renderingOptions:
previousButtonLabel: ''
nextButtonLabel: Next
identifier: page-1
label: ''
type: Page
renderables:
-
type: GridRow
identifier: gridrow-1
label: 'Grid: Row'
renderables:
-
defaultValue: 'this will be overwritten by TypoScript'
type: Text
identifier: article
label: Article
-
defaultValue: ''
type: Text
identifier: text-2
label: 'Amount'
[…]
我找到了如何使用标签而不是使用编号数组:
yaml:
type: Form
identifier: test1
prototypeName: standard
renderables:
page1:
renderingOptions:
previousButtonLabel: 'Previous step'
nextButtonLabel: 'Next step'
type: Page
identifier: page-1
label: Step
renderables:
field1:
defaultValue: ''
type: Text
identifier: email-1
label: 'My Email address'
properties:
validationErrorMessages:
-
code: 1221559976
message: öasdlkhfö
和打字错误:
plugin.tx_form{
settings{
formDefinitionOverrides {
# identifier of form
test1 {
renderables {
# first page of form
page1 {
renderables {
field1 {
label = TEXT
label.value = Eine ganze andere E-Mailaddresse
}
}
}
}
}
}
}
}
效果很好,但您不能混合使用 - 一个级别中的所有文件都必须有标签。这是有道理的,因为不可能在 php 数组中混合索引和键。