如何使用 TypoScript 覆盖 TYPO3 表单框架的 YAML 设置?
How can I override YAML settings of the TYPO3 Form Framework with TypoScript?
我已经通过表单框架创建了一个 TYPO3 表单。现在我想用 TypoScript 覆盖其中一些值。该表格存储在一个扩展中,可用于每个客户。客户特定的值应该被我的模板扩展覆盖,它只包含客户特定的设置。但是表单框架不使用这些设置。 TypoScript 已加载(模板分析器)并且我清除了所有缓存。
我目前使用的是TYPO3 Version 9.5.6,表单框架也是同一个版本。
这是表格的一个片段:
identifier: bewerbungsformular
label: Bewerbungsformular
type: Form
prototypeName: bewerbungen
finishers:
-
options:
subject: 'Ihre Bewerbung'
recipientAddress: '{text-email}'
recipientName:
senderAddress:
senderName: Test Company
replyToAddress: ''
carbonCopyAddress: ''
blindCarbonCopyAddress: ''
format: html
attachUploads: false
identifier: EmailToSender
这是我的模板扩展中的 setup.ts。我在 TYPO3 文档中找到了这个片段。但没有进一步解释通向价值的路径应该是什么样子。我认为路径中有问题:
plugin.tx_form {
settings {
yamlSettingsOverrides {
#I think here is the mistake
bewerbungsformular.finishers.EmailToSender.options.senderName = XYZ Company
}
}
}
谢谢。
对于 TypoScript overrides,您需要完全使用表单定义中使用的键。请注意,在转换为 PHP 数组后,列表与带有数字键的哈希基本相同。
所以在 YAML 中是这样的:
- foo
- bar
与此相同:
0: foo
1: bar
您还使用了 yamlSettingsOverrides
,但必须是 formDefinitionOverrides
。
因此您的代码应该如下所示:
plugin.tx_form {
settings {
formDefinitionOverrides {
bewerbungsformular {
finishers {
0 {
options {
senderName = XYZ Company
}
}
}
}
}
}
}
如您所见,数字索引不如命名索引。因此,如果您不打算在后端使用表单编辑器来进一步更改您的表单定义,您可以直接使用 YAML 哈希而不是列表:
identifier: bewerbungsformular
# ...
finishers:
mailToSender:
identifier: EmailToSender
options:
# ...
那么您的 TypoScript 覆盖可能如下所示:
plugin.tx_form {
settings {
formDefinitionOverrides {
bewerbungsformular {
finishers {
mailToSender {
options {
senderName = XYZ Company
}
}
}
}
}
}
}
我已经通过表单框架创建了一个 TYPO3 表单。现在我想用 TypoScript 覆盖其中一些值。该表格存储在一个扩展中,可用于每个客户。客户特定的值应该被我的模板扩展覆盖,它只包含客户特定的设置。但是表单框架不使用这些设置。 TypoScript 已加载(模板分析器)并且我清除了所有缓存。
我目前使用的是TYPO3 Version 9.5.6,表单框架也是同一个版本。
这是表格的一个片段:
identifier: bewerbungsformular
label: Bewerbungsformular
type: Form
prototypeName: bewerbungen
finishers:
-
options:
subject: 'Ihre Bewerbung'
recipientAddress: '{text-email}'
recipientName:
senderAddress:
senderName: Test Company
replyToAddress: ''
carbonCopyAddress: ''
blindCarbonCopyAddress: ''
format: html
attachUploads: false
identifier: EmailToSender
这是我的模板扩展中的 setup.ts。我在 TYPO3 文档中找到了这个片段。但没有进一步解释通向价值的路径应该是什么样子。我认为路径中有问题:
plugin.tx_form {
settings {
yamlSettingsOverrides {
#I think here is the mistake
bewerbungsformular.finishers.EmailToSender.options.senderName = XYZ Company
}
}
}
谢谢。
对于 TypoScript overrides,您需要完全使用表单定义中使用的键。请注意,在转换为 PHP 数组后,列表与带有数字键的哈希基本相同。
所以在 YAML 中是这样的:
- foo
- bar
与此相同:
0: foo
1: bar
您还使用了 yamlSettingsOverrides
,但必须是 formDefinitionOverrides
。
因此您的代码应该如下所示:
plugin.tx_form {
settings {
formDefinitionOverrides {
bewerbungsformular {
finishers {
0 {
options {
senderName = XYZ Company
}
}
}
}
}
}
}
如您所见,数字索引不如命名索引。因此,如果您不打算在后端使用表单编辑器来进一步更改您的表单定义,您可以直接使用 YAML 哈希而不是列表:
identifier: bewerbungsformular
# ...
finishers:
mailToSender:
identifier: EmailToSender
options:
# ...
那么您的 TypoScript 覆盖可能如下所示:
plugin.tx_form {
settings {
formDefinitionOverrides {
bewerbungsformular {
finishers {
mailToSender {
options {
senderName = XYZ Company
}
}
}
}
}
}
}