Как я могу переопределить настройки YAML для TYPO3 Form Framework с TypoScript? - PullRequest
0 голосов
/ 13 мая 2019

Я создал форму TYPO3 через каркас формы.Теперь я хочу переопределить некоторые из этих значений с TypoScript.Форма хранится в расширении, которое может быть использовано для каждого клиента.Специфичные для клиента значения должны быть переопределены моим расширением шаблона, которое включает только специфичные для клиента настройки.Но каркас формы не использует эти настройки.TypoScript загружен (Template Analyzer), и я очистил все кэши.

В настоящее время я использую 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
        }
    }
}

Спасибо.

1 Ответ

2 голосов
/ 13 мая 2019

Для Переопределения TypoScript вам необходимо использовать именно те ключи, которые используются в определении формы. Обратите внимание, что списки в основном совпадают с хешами с числовыми ключами после преобразования в массив 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
                        }
                    }
                }
            }
        }
    }
}
...