在Drupal 8中,我得到了一个异常'InvalidArgumentException‘和消息’form参数system_theme_settings不是有效的表单‘。
故事是:我无法向我的安装配置文件中添加自定义颜色,因为颜色模块在主题设置上的表单提交被调用之前不会设置配置,所以我使用hook_form_alter()获得了hook_form_alter,添加了一个自定义form_submit处理程序,并将form_state变量序列化到一个文件中(因为form_state是巨大的,我不知道如何在其中找到有用的值),并在安装配置文件中加载了非序列化()。(有点让人想起这个问题:https://www.drupal.org/node/1963922)
然后,我跑了:\Drupal::formBuilder()->submitForm('system_theme_settings',$form_state_variable);
德鲁巴告诉他'system_theme_settings‘不是一个有效的形式。但是,如果我已经使用这个form_id向这个表单添加了一个自定义表单提交处理程序,这怎么可能是真的呢?
如果我不应该使用form_id,而应该使用特定的函数或类似的东西,那么我应该在哪里找到这个函数呢?
发布于 2015-10-27 22:23:15
FormBuilder::submitForm的api文档并不完全正确。$form_arg参数不再可以是函数,但它引用表单的类名或表单对象。在本例中,ThemeSettingsForm是对应于system_theme_settings每个getFormId()方法返回值的类。
但是,我不确定调用FormBuilder::submitForm是否能解决您的问题,因为表单状态可能对系统主题设置表单无效。为了设置/保存必要的配置,最好是跟踪特定的颜色模块需要什么,而不是试图模拟表单提交。
https://drupal.stackexchange.com/questions/178789
复制相似问题