Drupal 9 - 不显示消息和消息状态系统块
Drupal 9 - Message and message statut system blocks are not displayed
感谢您花时间阅读我的问题。
我在使用 Drupal 9 在我的内容区域中添加消息和消息状态块时遇到问题。我使用的是自定义主题。
块根本不显示。它们甚至没有添加到 DOM.
这是我的块配置:https://imgur.com/gPvEq1Q(抱歉,是法语。两个块用红色下划线标出)
以及每个块的配置:https://imgur.com/q3cBToL and https://imgur.com/hePdhHn(同样,法语,但对页面、角色或内容类型没有限制——它应该出现在任何地方)
我在网上找到了这些解决方案:
我试过卸载我的主题、清除缓存、重新安装我的主题,但都不起作用。这些块也没有出现在 Bartik 主题中。
2 - https://www.drupal.org/forum/support/post-installation/2018-09-23/new-blocks-not-displaying
我尝试添加一个简单的测试块,显示正常。
我尝试使用 $this->messenger()->addMessage("test"); 显示测试消息在一个模块中,以确保有东西可以显示,但没有成功。
我不确定它是否有帮助,但这是我的 page.twig 模板:
<header aria-label="Site header" class="header" id="header" role="banner">
<div id='header-content'>
<div id="header-left">
{{ page.branding }}
{{ page.navigation }}
</div>
<div id='header-right'>
{{ page.user_menu }}
{{ page.search }}
</div>
</div>
</header>
<section class="main" id="main">
<main aria-label="Site main content" class="content" id="content" role="main">
{{ page.content }}
</main>
</section>
<footer aria-label="Site footer" class="footer" id="footer" role="contentinfo">
<div class="footer--top">
{{ page.footer_first }}
</div>
<div class="footer--bottom">
{{ page.footer_bottom }}
</div>
</footer>
你们中有人遇到过这个问题吗?有解决办法吗?
再次感谢!
编辑
这是 twig 调试的输出:
<!-- THEME DEBUG -->
<!-- THEME HOOK: 'block' -->
<!-- FILE NAME SUGGESTIONS:
* block--messages.html.twig
x block--system-messages-block.html.twig
* block--system.html.twig
* block.html.twig
-->
<!-- BEGIN OUTPUT from 'core/modules/system/templates/block--system-messages-block.html.twig' -->
<div data-drupal-messages-fallback class="hidden"></div><span data-big-pipe-placeholder-id="callback=Drupal%5CCore%5CRender%5CElement%5CStatusMessages%3A%3ArenderMessages&args%5B0%5D&token=_HAdUpwWmet0TOTe2PSiJuMntExoshbm1kh2wQzzzAA"></span>
<!-- END OUTPUT from 'core/modules/system/templates/block--system-messages-block.html.twig' -->
这表明 \Drupal::messenger()->addMessage();不输出任何信息。
我注意到使用 FormBase class 测试的一件奇怪的事情是 Drupal\Core\Form\FormStateInterface::setErrorByName() 方法工作正常。正在显示一条消息,twig 调试输出变为
<!-- THEME DEBUG -->
<!-- THEME HOOK: 'block' -->
<!-- FILE NAME SUGGESTIONS:
* block--cessoc-messages.html.twig
x block--system-messages-block.html.twig
* block--system.html.twig
* block.html.twig
-->
<!-- BEGIN OUTPUT from 'core/modules/system/templates/block--system-messages-block.html.twig' -->
<div data-drupal-messages-fallback class="hidden"></div>
<!-- THEME DEBUG -->
<!-- THEME HOOK: 'status_messages' -->
<!-- BEGIN OUTPUT from 'core/modules/system/templates/status-messages.html.twig' -->
<div data-drupal-messages>
<div role="contentinfo" aria-label="Message d'erreur">
<div role="alert">
<h2 class="visually-hidden">Message d'erreur</h2>
The title must be at least 5 characters long.
</div>
</div>
</div>
<!-- END OUTPUT from 'core/modules/system/templates/status-messages.html.twig' -->
<!-- END OUTPUT from 'core/modules/system/templates/block--system-messages-block.html.twig' -->
我的问题解决了!
如Kien Nguyen所建议的那样,这是由 BigPipe 模块未使用状态消息填充消息块引起的问题。
显然,这是因为我的主题包含一个 jQuery.js 文件,该文件已过时。我删除了它,现在一切正常。
感谢您花时间阅读我的问题。
我在使用 Drupal 9 在我的内容区域中添加消息和消息状态块时遇到问题。我使用的是自定义主题。
块根本不显示。它们甚至没有添加到 DOM.
这是我的块配置:https://imgur.com/gPvEq1Q(抱歉,是法语。两个块用红色下划线标出)
以及每个块的配置:https://imgur.com/q3cBToL and https://imgur.com/hePdhHn(同样,法语,但对页面、角色或内容类型没有限制——它应该出现在任何地方)
我在网上找到了这些解决方案:
我试过卸载我的主题、清除缓存、重新安装我的主题,但都不起作用。这些块也没有出现在 Bartik 主题中。
2 - https://www.drupal.org/forum/support/post-installation/2018-09-23/new-blocks-not-displaying
我尝试添加一个简单的测试块,显示正常。
我尝试使用 $this->messenger()->addMessage("test"); 显示测试消息在一个模块中,以确保有东西可以显示,但没有成功。
我不确定它是否有帮助,但这是我的 page.twig 模板:
<header aria-label="Site header" class="header" id="header" role="banner">
<div id='header-content'>
<div id="header-left">
{{ page.branding }}
{{ page.navigation }}
</div>
<div id='header-right'>
{{ page.user_menu }}
{{ page.search }}
</div>
</div>
</header>
<section class="main" id="main">
<main aria-label="Site main content" class="content" id="content" role="main">
{{ page.content }}
</main>
</section>
<footer aria-label="Site footer" class="footer" id="footer" role="contentinfo">
<div class="footer--top">
{{ page.footer_first }}
</div>
<div class="footer--bottom">
{{ page.footer_bottom }}
</div>
</footer>
你们中有人遇到过这个问题吗?有解决办法吗?
再次感谢!
编辑
这是 twig 调试的输出:
<!-- THEME DEBUG -->
<!-- THEME HOOK: 'block' -->
<!-- FILE NAME SUGGESTIONS:
* block--messages.html.twig
x block--system-messages-block.html.twig
* block--system.html.twig
* block.html.twig
-->
<!-- BEGIN OUTPUT from 'core/modules/system/templates/block--system-messages-block.html.twig' -->
<div data-drupal-messages-fallback class="hidden"></div><span data-big-pipe-placeholder-id="callback=Drupal%5CCore%5CRender%5CElement%5CStatusMessages%3A%3ArenderMessages&args%5B0%5D&token=_HAdUpwWmet0TOTe2PSiJuMntExoshbm1kh2wQzzzAA"></span>
<!-- END OUTPUT from 'core/modules/system/templates/block--system-messages-block.html.twig' -->
这表明 \Drupal::messenger()->addMessage();不输出任何信息。
我注意到使用 FormBase class 测试的一件奇怪的事情是 Drupal\Core\Form\FormStateInterface::setErrorByName() 方法工作正常。正在显示一条消息,twig 调试输出变为
<!-- THEME DEBUG -->
<!-- THEME HOOK: 'block' -->
<!-- FILE NAME SUGGESTIONS:
* block--cessoc-messages.html.twig
x block--system-messages-block.html.twig
* block--system.html.twig
* block.html.twig
-->
<!-- BEGIN OUTPUT from 'core/modules/system/templates/block--system-messages-block.html.twig' -->
<div data-drupal-messages-fallback class="hidden"></div>
<!-- THEME DEBUG -->
<!-- THEME HOOK: 'status_messages' -->
<!-- BEGIN OUTPUT from 'core/modules/system/templates/status-messages.html.twig' -->
<div data-drupal-messages>
<div role="contentinfo" aria-label="Message d'erreur">
<div role="alert">
<h2 class="visually-hidden">Message d'erreur</h2>
The title must be at least 5 characters long.
</div>
</div>
</div>
<!-- END OUTPUT from 'core/modules/system/templates/status-messages.html.twig' -->
<!-- END OUTPUT from 'core/modules/system/templates/block--system-messages-block.html.twig' -->
我的问题解决了!
如Kien Nguyen所建议的那样,这是由 BigPipe 模块未使用状态消息填充消息块引起的问题。
显然,这是因为我的主题包含一个 jQuery.js 文件,该文件已过时。我删除了它,现在一切正常。