用错别字覆盖单个表单的 YAML 文件

Overwrite YAML-Files of individual forms with typoscript

我尝试了几个小时来覆盖带有打字错误的表单的 yaml 文件中的一些参数。我在手册中找到了这段话:

https://docs.typo3.org/c/typo3/cms-form/9.5/en-us/Concepts/FrontendRendering/Index.html?highlight=formdefinitionoverrides#typoscript-overrides

但我无法让它工作。另外我找不到调试我的 yaml 定义的方法。我用

尝试了提示
 typo3/sysext/form/Classes/Mvc/Configuration/ConfigurationManager.php::getConfigurationFromYamlFile()

但这只显示了原型而不是表单。

所以我有一些问题:

谢谢!

是的,它确实有效。这是一个例子。

本例中的标识符是“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 数组中混合索引和键。