Конструктор форм()->Форма отправки() не работает
В 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 answers
Документация api для FormBuilder::submitForm
это не совсем правильно. Аргумент $form_arg
больше не может быть функцией, но он ссылается на имя класса или объект формы формы. В этом случае Themesettingsform - это класс, соответствующий system_theme_settings
согласно возвращаемому значению метода getFormId()
.
Однако я не уверен, что вызов FormBuilder::submitForm
будет работать с вашим вопросом, потому что состояние формы может быть недопустимым для формы настроек системной темы. Возможно, будет лучше отследить, что в частности, модуль color необходим для установки/сохранения необходимой конфигурации вместо того, чтобы пытаться имитировать отправку формы.