Drupal 9.5升级至10.3后首页渲染报错:无效渲染数组键
Drupal 9.5升级到10.3后首页渲染报错:无效的渲染数组键"0"
问题描述
将Drupal从9.5版本升级至10.3版本后,渲染首页时返回错误。已确认当前使用的主题及维护主题均已在core.extensions中配置,谷歌搜索找到的问题与当前情况不符,寻求排查建议。
错误信息
InvalidArgumentException: "0" is an invalid render array key. Value should be an array but got a string. in Drupal\Core\Render\Element::children() (line 97 of core/lib/Drupal/Core/Render/Element.php).
排查建议
- 检查自定义主题/子主题的Twig模板:重点排查首页相关模板(如
page.html.twig、frontpage.html.twig),看是否存在将字符串当作数组遍历,或错误使用数字键"0"对应非数组值的情况。 - 检查自定义模块/ contrib模块的渲染数组生成:关注首页内容相关模块的钩子实现(如
hook_page_build、hook_preprocess_page),确认构建渲染数组时,键"0"是否被赋值为字符串而非数组。 - 启用Twig调试:在
sites/default/services.yml中设置twig.config.debug: true,定位具体报错的Twig模板文件及行号,精准排查问题代码。 - 临时切换默认主题:切换到Olivero等官方默认主题,若错误消失,说明问题出在当前主题的模板或预处理函数中。
- 检查contrib模块兼容性:确认所有安装的contrib模块均适配Drupal 10.3,尤其是布局、区块类模块,升级至最新兼容版本。
- 清除全站缓存:执行
drush cr或后台清除所有缓存,确保升级后的配置与代码生效。
堆栈追踪
Drupal\Core\Render\Renderer->doRender() (Line: 248) Drupal\Core\Render\Renderer->render() (Line: 476) Drupal\Core\Template\TwigExtension->escapeFilter() (Line: 65) __TwigTemplate_5a57f8db7ac7ab73ebef615a50c49577->doDisplay() (Line: 393) Twig\Template->yield() (Line: 349) Twig\Template->display() (Line: 364) Twig\Template->render() (Line: 35) Twig\TemplateWrapper->render() (Line: 33) twig_render_template() (Line: 348) Drupal\Core\Theme\ThemeManager->render() (Line: 491) Drupal\Core\Render\Renderer->doRender() (Line: 248) Drupal\Core\Render\Renderer->render() (Line: 476) Drupal\Core\Template\TwigExtension->escapeFilter() (Line: 329) __TwigTemplate_1c10b7b5f11c822ef981cbc9e3007a19->doDisplay() (Line: 393) Twig\Template->yield() (Line: 349) Twig\Template->display() (Line: 364) Twig\Template->render() (Line: 35) Twig\TemplateWrapper->render() (Line: 33) twig_render_template() (Line: 348) Drupal\Core\Theme\ThemeManager->render() (Line: 491) Drupal\Core\Render\Renderer->doRender() (Line: 248) Drupal\Core\Render\Renderer->render() (Line: 476) Drupal\Core\Template\TwigExtension->escapeFilter() (Line: 93) __TwigTemplate_fdef4cbc091a25172c88e397d4f1ee92->doDisplay() (Line: 393) Twig\Template->yield() (Line: 349) Twig\Template->display() (Line: 364) Twig\Template->render() (Line: 35) Twig\TemplateWrapper->render() (Line: 33) twig_render_template() (Line: 348) Drupal\Core\Theme\ThemeManager->render() (Line: 491) Drupal\Core\Render\Renderer->doRender() (Line: 248) Drupal\Core\Render\Renderer->render() (Line: 158) Drupal\Core\Render\MainContent\HtmlRenderer->Drupal\Core\Render\MainContent\{closure}() (Line: 638) Drupal\Core\Render\Renderer->executeInRenderContext() (Line: 153) Drupal\Core\Render\MainContent\HtmlRenderer->renderResponse() (Line: 90) Drupal\Core\EventSubscriber\MainContentViewSubscriber->onViewRenderArray() call_user_func() (Line: 111) Drupal\Component\EventDispatcher\ContainerAwareEventDispatcher->dispatch() (Line: 186) Symfony\Component\HttpKernel\HttpKernel->handleRaw() (Line: 76) Symfony\Component\HttpKernel\HttpKernel->handle() (Line: 53) Drupal\Core\StackMiddleware\Session->handle() (Line: 48) Drupal\Core\StackMiddleware\KernelPreHandle->handle() (Line: 28) Drupal\Core\StackMiddleware\ContentLength->handle() (Line: 32) Drupal\big_pipe\StackMiddleware\ContentLength->handle() (Line: 106) Drupal\page_cache\StackMiddleware\PageCache->pass() (Line: 85) Drupal\page_cache\StackMiddleware\PageCache->handle() (Line: 48) Drupal\Core\StackMiddleware\ReverseProxyMiddleware->handle() (Line: 51) Drupal\Core\StackMiddleware\NegotiationMiddleware->handle() (Line: 36) Drupal\Core\StackMiddleware\AjaxPageState->handle() (Line: 51) Drupal\Core\StackMiddleware\StackedHttpKernel->handle() (Line: 741) Drupal\Core\DrupalKernel->handle() (Line: 19)
内容的提问来源于stack exchange,提问作者user3481441
相关产品推荐
相关产品推荐

