gpt4 book ai didi

forms - 如何使用 TypoScript 覆盖 TYPO3 表单框架的 YAML 设置?

转载 作者:行者123 更新时间:2023-12-03 08:55:07 25 4
gpt4 key购买 nike

我通过表单框架创建了一个 TYPO3 表单。现在我想用 TypoScript 覆盖其中一些值。该表格存储在扩展中,可供每个客户使用。客户特定值应由我的模板扩展覆盖,其中仅包含客户特定设置。但表单框架不使用这些设置。 TypoScript 已加载(模板分析器),并且我清除了所有缓存。

我目前使用TYPO3版本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
}
}
}
}
}
}
}

关于forms - 如何使用 TypoScript 覆盖 TYPO3 表单框架的 YAML 设置?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56114958/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com