Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/typo3/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Forms 如何使用打字脚本覆盖TYPO3表单框架的YAML设置?_Forms_Typo3_Yaml_Typoscript_Typo3 9.x - Fatal编程技术网

Forms 如何使用打字脚本覆盖TYPO3表单框架的YAML设置?

Forms 如何使用打字脚本覆盖TYPO3表单框架的YAML设置?,forms,typo3,yaml,typoscript,typo3-9.x,Forms,Typo3,Yaml,Typoscript,Typo3 9.x,我通过表单框架创建了一个TYPO3表单。现在我想用打字脚本覆盖其中一些值。表单存储在扩展中,可用于每个客户。特定于客户的值应被仅包含特定于客户的设置的“我的模板”扩展覆盖。但是表单框架不使用这些设置。输入脚本被加载(模板分析器),我清除了所有缓存 我目前使用的是TYPO3版本9.5.6,表单框架也有相同的版本 这是表单中的一个片段: identifier: bewerbungsformular label: Bewerbungsformular type: Form prototypeName:

我通过表单框架创建了一个TYPO3表单。现在我想用打字脚本覆盖其中一些值。表单存储在扩展中,可用于每个客户。特定于客户的值应被仅包含特定于客户的设置的“我的模板”扩展覆盖。但是表单框架不使用这些设置。输入脚本被加载(模板分析器),我清除了所有缓存

我目前使用的是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
        }
    }
}
谢谢。

因为您需要准确地使用表单定义中使用的键。请注意,列表基本上与转换为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:
      # ...
然后您的打字稿覆盖可能如下所示:

plugin.tx_form {
    settings {
        formDefinitionOverrides {
            bewerbungsformular {
                finishers {
                    mailToSender {
                        options {
                            senderName = XYZ Company
                        }
                    }
                }
            }
        }
    }
}