我在试图覆盖自定义主题中的自定义内容类型编辑表单模板时遇到了一个非常奇怪的问题。
我有一个自定义主题mysite_admin
(seven
的子主题(,具有最小的设置。它具有强制性的mysite_admin.info.yml
和mysite_admin.theme
文件。出于演示目的,我创建了一个名为Very Basic Content Type
的内容类型。现在我想preprocess
所述内容类型的编辑表单,所以我在mysite_admin.theme
文件中创建了以下函数
function mysite_admin_preprocess_form__node_very_basic_content_type_form(&$variables) {
ksm($variables);
}
刷新现金,而不是在我的编辑表单顶部看到变量输出,我看到了一个异常,如下
The website encountered an unexpected error. Please try again later.
TypeError: Argument 1 passed to DrupalCoreRenderElement::setAttributes() must be of the type array, null given, called in /home/ejaz/sites/mysite/core/includes/form.inc on line 362 in DrupalCoreRenderElement::setAttributes() (line 173 of core/lib/Drupal/Core/Render/Element.php).
DrupalCoreRenderElement::setAttributes() (Line: 362)
template_preprocess_form() (Line: 287)
DrupalCoreThemeThemeManager->render() (Line: 431)
DrupalCoreRenderRenderer->doRender() (Line: 200)
DrupalCoreRenderRenderer->render() (Line: 226)
DrupalCoreRenderMainContentHtmlRenderer->DrupalCoreRenderMainContent{closure}() (Line: 573)
DrupalCoreRenderRenderer->executeInRenderContext() (Line: 227)
DrupalCoreRenderMainContentHtmlRenderer->prepare() (Line: 117)
DrupalCoreRenderMainContentHtmlRenderer->renderResponse() (Line: 90)
DrupalCoreEventSubscriberMainContentViewSubscriber->onViewRenderArray()
call_user_func() (Line: 111)
DrupalComponentEventDispatcherContainerAwareEventDispatcher->dispatch() (Line: 156)
SymfonyComponentHttpKernelHttpKernel->handleRaw() (Line: 68)
SymfonyComponentHttpKernelHttpKernel->handle() (Line: 57)
DrupalCoreStackMiddlewareSession->handle() (Line: 47)
DrupalCoreStackMiddlewareKernelPreHandle->handle() (Line: 106)
Drupalpage_cacheStackMiddlewarePageCache->pass() (Line: 85)
Drupalpage_cacheStackMiddlewarePageCache->handle() (Line: 47)
DrupalCoreStackMiddlewareReverseProxyMiddleware->handle() (Line: 52)
DrupalCoreStackMiddlewareNegotiationMiddleware->handle() (Line: 23)
StackStackedHttpKernel->handle() (Line: 694)
DrupalCoreDrupalKernel->handle() (Line: 19)
如果我在自定义主题的templates
目录中创建了一个名为form--node-very-basic-content-type-form.html.twig
的模板,而在主题文件中没有所述的预处理函数,我会看到同样的异常。
瓦格万?
使用hook_form_alter
,并通过添加特定于内容编辑表单的条件来使用它。