Конструктор форм()->Форма отправки() не работает


В Drupal 8 я получаю исключение "Исключение InvalidArgumentException" с сообщением "Аргумент формы system_theme_settings не является допустимой формой".

История такова: я не могу добавить пользовательские цвета в свой профиль установки из-за того, что модуль цвета не задает конфигурацию, пока не будет вызвана форма отправки в настройках темы, поэтому я получил form_id с помощью hook_form_alter(), добавил пользовательский обработчик form_submit и сериализовал переменную form_state в файл (потому что form_state был гигантским, и я понятия не имел, как найти там полезные значения) и загрузил его с помощью unserialize() в моем профиле установки. (Отчасти напоминает об этой проблеме: https://www.drupal.org/node/1963922)

Затем я побежал: \Drupal::FormBuilder()->Форма отправки ('system_theme_settings', $form_state_variable);

И Друпал сказал, что "system_theme_settings" не является допустимой формой. Но как это может быть правдой, если я уже добавил пользовательскую форму отправки обработчик этой формы с использованием этого самого form_id?

Если я не должен использовать form_id, а скорее определенную функцию или что-то в этом роде, где я должен искать эту функцию?

 1
Author: RaisinBranCrunch, 2015-10-26

1 answers

Документация api для FormBuilder::submitForm это не совсем правильно. Аргумент $form_arg больше не может быть функцией, но он ссылается на имя класса или объект формы формы. В этом случае Themesettingsform - это класс, соответствующий system_theme_settings согласно возвращаемому значению метода getFormId().

Однако я не уверен, что вызов FormBuilder::submitForm будет работать с вашим вопросом, потому что состояние формы может быть недопустимым для формы настроек системной темы. Возможно, будет лучше отследить, что в частности, модуль color необходим для установки/сохранения необходимой конфигурации вместо того, чтобы пытаться имитировать отправку формы.

 1
Author: mradcliffe, 2017-07-16 13:33:05