Steps to reproduce
Drupal 9.4.4, with Layout Builder and Layout builder library 8.x-1.0-beta3 enabled.
Save a node (with layout builder configured for the node's content type) and it may result in a white screen and in the logs you may found the following error:
Error: Uncaught exception 'Error' with message 'Call to undefined method Drupal\Core\Entity\Entity\EntityViewDisplay::isLayoutBuilderEnabled()' in /mnt/www/html/docroot/core/modules/layout_builder/src/Plugin/SectionStorage/DefaultsSectionStorage.php:330
in Drupal\layout_builder\Plugin\SectionStorage\DefaultsSectionStorage::isLayoutBuilderEnabled called at /mnt/www/html/docroot/core/modules/layout_builder/src/Plugin/SectionStorage/DefaultsSectionStorage.php (382) in Drupal\layout_builder\Plugin\SectionStorage\DefaultsSectionStorage::access called at /mnt/www/html/docroot/core/modules/layout_builder/src/Plugin/SectionStorage/OverridesSectionStorage.php (362) in Drupal\layout_builder\Plugin\SectionStorage\OverridesSectionStorage::access called at /mnt/www/html/docroot/core/modules/layout_builder/src/Access/LayoutBuilderAccessCheck.php (37) in Drupal\layout_builder\Access\LayoutBuilderAccessCheck::access called at ? (?) in call_user_func_array called at /mnt/www/html/docroot/core/lib/Drupal/Core/Access/AccessManager.php (160) in Drupal\Core\Access\AccessManager::performCheck called at /mnt/www/html/docroot/core/lib/Drupal/Core/Access/AccessManager.php (136) in Drupal\Core\Access\AccessManager::check called at /mnt/www/html/docroot/core/lib/Drupal/Core/Access/AccessManager.php (93) in Drupal\Core\Access\AccessManager::checkNamedRoute called at /mnt/www/html/docroot/core/lib/Drupal/Core/Menu/LocalTaskManager.php (327) in Drupal\Core\Menu\LocalTaskManager::getTasksBuild called at /mnt/www/html/docroot/core/lib/Drupal/Core/Menu/LocalTaskManager.php (358) in Drupal\Core\Menu\LocalTaskManager::getLocalTasks called at /mnt/www/html/docroot/core/lib/Drupal/Core/Menu/Plugin/Block/LocalTasksBlock.php (95) in Drupal\Core\Menu\Plugin\Block\LocalTasksBlock::build called at /mnt/www/html/docroot/core/modules/block/src/BlockViewBuilder.php (171) in Drupal\block\BlockViewBuilder::preRender called at ? (?) in call_user_func_array called at /mnt/www/html/docroot/core/lib/Drupal/Core/Security/DoTrustedCallbackTrait.php (101) in Drupal\Core\Render\Renderer::doTrustedCallback called at /mnt/www/html/docroot/core/lib/Drupal/Core/Render/Renderer.php (772) in Drupal\Core\Render\Renderer::doCallback called at /mnt/www/html/docroot/core/lib/Drupal/Core/Render/Renderer.php (363) in Drupal\Core\Render\Renderer::doRender called at /mnt/www/html/docroot/core/lib/Drupal/Core/Render/Renderer.php (435) in Drupal\Core\Render\Renderer::doRender called at /mnt/www/html/docroot/core/lib/Drupal/Core/Render/Renderer.php (201) in Drupal\Core\Render\Renderer::render called at /mnt/www/html/docroot/core/lib/Drupal/Core/Template/TwigExtension.php (479) in Drupal\Core\Template\TwigExtension::escapeFilter called at /mnt/tmp/php_storage/twig/bdd64c0/twig/62f35df94a7be_page-header.html.twig_v4I2gqMIsEnUcATwYN8MXCmAh/EYgDXuhByDfYkCcLur6tQB9IslapXZatiqKToY-qSak.php (490) in __TwigTemplate_98bf008697e07c1f228ab620a72d6f5e85ce530f0e8cabdc06f08041b661e1ca::doDisplay called at /mnt/www/html/vendor/twig/twig/src/Template.php (405) in Twig\Template::displayWithErrorHandling called at /mnt/www/html/vendor/twig/twig/src/Template.php (378) in Twig\Template::display called at /mnt/tmp/php_storage/twig/bdd64c0/twig/62f35df94a7be_page.html.twig_5in4UiY922JaniQf9Eah2Ktyo/2PNotHjJCrI_auqtdy_RDe89650F2qy8fG1A95-KvRU.php (73) in __TwigTemplate_e7797054032d4775fc932d60d2fdfdebd0f62390788c14207a2d55c5582f9ba1::doDisplay called at /mnt/www/html/vendor/twig/twig/src/Template.php (405) in Twig\Template::displayWithErrorHandling called at /mnt/www/html/vendor/twig/twig/src/Template.php (378) in Twig\Template::display called at /mnt/www/html/vendor/twig/twig/src/Template.php (390) in Twig\Template::render called at /mnt/www/html/docroot/core/themes/engines/twig/twig.engine (55) in twig_render_template called at /mnt/www/html/docroot/core/lib/Drupal/Core/Theme/ThemeManager.php (384)
....This problem doesn't happen all the time and I tried to detect the exact conditions where this happens but I couldn't so far.
After clearing cache the problem is solved for the updated node.
Proposed resolution
Add an extra check before calling the function isLayoutBuilderEnabled() to ensure the function exists for the given display class, example :if (method_exists($display, 'isLayoutBuilderEnabled') && !$display->isLayoutBuilderEnabled()) {
| Comment | File | Size | Author |
|---|---|---|---|
| #2 | 3306517-2.patch | 1.08 KB | eleonel |
Comments
Comment #2
eleonelPatch attached.
Comment #3
anchal_gupta commentedI have applied patch #2 is working fine.