Problem/Motivation

On 8.8.x. Standard, Install Layout Builder and enable Layout Builder and override on Basic page.

1. Create a new Basic page.
2. Override the layout.
3. Click "Add Block" , add "Name" under "User fields"
4. Save the layout

The website encountered an unexpected error. Please try again later.

Stack trace:

Error: Call to a member function isDisplayConfigurable() on null in Drupal\layout_builder\QuickEditIntegration->supportQuickEditOnComponent() (line 316 of /Users/john/code/drupal/core/modules/layout_builder/src/QuickEditIntegration.php) #0 /Users/john/code/drupal/core/modules/layout_builder/src/QuickEditIntegration.php(140): Drupal\layout_builder\QuickEditIntegration->supportQuickEditOnComponent(Array, Object(Drupal\node\Entity\Node)) #1 /Users/john/code/drupal/core/modules/layout_builder/layout_builder.module(169): Drupal\layout_builder\QuickEditIntegration->entityViewAlter(Array, Object(Drupal\node\Entity\Node), Object(Drupal\layout_builder\Entity\LayoutBuilderEntityViewDisplay)) #2 /Users/john/code/drupal/core/lib/Drupal/Core/Extension/ModuleHandler.php(539): layout_builder_entity_view_alter(Array, Object(Drupal\node\Entity\Node), Object(Drupal\layout_builder\Entity\LayoutBuilderEntityViewDisplay)) #3 /Users/john/code/drupal/core/lib/Drupal/Core/Entity/EntityViewBuilder.php(308): Drupal\Core\Extension\ModuleHandler->alter('node_view', Array, Object(Drupal\node\Entity\Node), Object(Drupal\layout_builder\Entity\LayoutBuilderEntityViewDisplay)) #4 /Users/john/code/drupal/core/lib/Drupal/Core/Entity/EntityViewBuilder.php(242): Drupal\Core\Entity\EntityViewBuilder->buildMultiple(Array) #5 [internal function]: Drupal\Core\Entity\EntityViewBuilder->build(Array) #6 /Users/john/code/drupal/core/lib/Drupal/Core/Render/Renderer.php(378): call_user_func(Array, Array) #7 /Users/john/code/drupal/core/lib/Drupal/Core/Render/Renderer.php(195): Drupal\Core\Render\Renderer->doRender(Array, false) #8 /Users/john/code/drupal/core/lib/Drupal/Core/Render/MainContent/HtmlRenderer.php(226): Drupal\Core\Render\Renderer->render(Array, false) #9 /Users/john/code/drupal/core/lib/Drupal/Core/Render/Renderer.php(582): Drupal\Core\Render\MainContent\HtmlRenderer->Drupal\Core\Render\MainContent\{closure}() #10 /Users/john/code/drupal/core/lib/Drupal/Core/Render/MainContent/HtmlRenderer.php(227): Drupal\Core\Render\Renderer->executeInRenderContext(Object(Drupal\Core\Render\RenderContext), Object(Closure)) #11 /Users/john/code/drupal/core/lib/Drupal/Core/Render/MainContent/HtmlRenderer.php(117): Drupal\Core\Render\MainContent\HtmlRenderer->prepare(Array, Object(Symfony\Component\HttpFoundation\Request), Object(Drupal\Core\Routing\CurrentRouteMatch)) #12 /Users/john/code/drupal/core/lib/Drupal/Core/EventSubscriber/MainContentViewSubscriber.php(90): Drupal\Core\Render\MainContent\HtmlRenderer->renderResponse(Array, Object(Symfony\Component\HttpFoundation\Request), Object(Drupal\Core\Routing\CurrentRouteMatch)) #13 [internal function]: Drupal\Core\EventSubscriber\MainContentViewSubscriber->onViewRenderArray(Object(Symfony\Component\HttpKernel\Event\GetResponseForControllerResultEvent), 'kernel.view', Object(Drupal\Component\EventDispatcher\ContainerAwareEventDispatcher)) #14 /Users/john/code/drupal/core/lib/Drupal/Component/EventDispatcher/ContainerAwareEventDispatcher.php(111): call_user_func(Array, Object(Symfony\Component\HttpKernel\Event\GetResponseForControllerResultEvent), 'kernel.view', Object(Drupal\Component\EventDispatcher\ContainerAwareEventDispatcher)) #15 /Users/john/code/drupal/vendor/symfony/http-kernel/HttpKernel.php(156): Drupal\Component\EventDispatcher\ContainerAwareEventDispatcher->dispatch('kernel.view', Object(Symfony\Component\HttpKernel\Event\GetResponseForControllerResultEvent)) #16 /Users/john/code/drupal/vendor/symfony/http-kernel/HttpKernel.php(68): Symfony\Component\HttpKernel\HttpKernel->handleRaw(Object(Symfony\Component\HttpFoundation\Request), 1) #17 /Users/john/code/drupal/core/lib/Drupal/Core/StackMiddleware/Session.php(57): Symfony\Component\HttpKernel\HttpKernel->handle(Object(Symfony\Component\HttpFoundation\Request), 1, true) #18 /Users/john/code/drupal/core/lib/Drupal/Core/StackMiddleware/KernelPreHandle.php(47): Drupal\Core\StackMiddleware\Session->handle(Object(Symfony\Component\HttpFoundation\Request), 1, true) #19 /Users/john/code/drupal/core/modules/page_cache/src/StackMiddleware/PageCache.php(106): Drupal\Core\StackMiddleware\KernelPreHandle->handle(Object(Symfony\Component\HttpFoundation\Request), 1, true) #20 /Users/john/code/drupal/core/modules/page_cache/src/StackMiddleware/PageCache.php(85): Drupal\page_cache\StackMiddleware\PageCache->pass(Object(Symfony\Component\HttpFoundation\Request), 1, true) #21 /Users/john/code/drupal/core/lib/Drupal/Core/StackMiddleware/ReverseProxyMiddleware.php(47): Drupal\page_cache\StackMiddleware\PageCache->handle(Object(Symfony\Component\HttpFoundation\Request), 1, true) #22 /Users/john/code/drupal/core/lib/Drupal/Core/StackMiddleware/NegotiationMiddleware.php(52): Drupal\Core\StackMiddleware\ReverseProxyMiddleware->handle(Object(Symfony\Component\HttpFoundation\Request), 1, true) #23 /Users/john/code/drupal/vendor/stack/builder/src/Stack/StackedHttpKernel.php(23): Drupal\Core\StackMiddleware\NegotiationMiddleware->handle(Object(Symfony\Component\HttpFoundation\Request), 1, true) #24 /Users/john/code/drupal/core/lib/Drupal/Core/DrupalKernel.php(693): Stack\StackedHttpKernel->handle(Object(Symfony\Component\HttpFoundation\Request), 1, true) #25 /Users/john/code/drupal/index.php(19): Drupal\Core\DrupalKernel->handle(Object(Symfony\Component\HttpFoundation\Request)) #26 /Users/john/code/drupal/.ht.router.php(65): require('/Users/john/cod...') #27 {main}.

Proposed resolution

Remaining tasks

User interface changes

API changes

Data model changes

Release notes snippet

Comments

johndevman created an issue. See original summary.

tim.plunkett’s picture

Title: Cannot add User fields » Layout Builder's Quick Edit integration causes fatals when using field blocks for entities other than the one being viewed
Status: Active » Needs review
Issue tags: +Blocks-Layouts, +Needs tests
StatusFileSize
new1004 bytes

Wow, that's a pretty clear oversight. Thankfully it's an easy fix.
This needs tests.

From what I can see this only currently affects user fields because of the ability to add fields representing the currently logged-in user.

phenaproxima’s picture

Assigned: Unassigned » phenaproxima

Assigning to myself for tests.

phenaproxima’s picture

Assigned: phenaproxima » Unassigned
Issue tags: -Needs tests
StatusFileSize
new2.25 KB
new3.23 KB

And, done. Fail patch is the interdiff.

johnwebdev’s picture

+++ b/core/modules/layout_builder/tests/src/Functional/LayoutBuilderQuickEditTest.php
@@ -0,0 +1,72 @@
\ No newline at end of file

newline.

Other than that, looks great. I've tested the patch locally (as I was writing a test myself, but I'm way to slow!)

phenaproxima’s picture

StatusFileSize
new3.21 KB

Added the newline. Thanks for pointing that out! :)

johnwebdev’s picture

Status: Needs review » Reviewed & tested by the community
tim.plunkett’s picture

Status: Reviewed & tested by the community » Needs work

Two more nits, sorry!

  1. +++ b/core/modules/layout_builder/tests/src/Functional/LayoutBuilderQuickEditTest.php
    @@ -0,0 +1,72 @@
    +    $this->drupalPlaceBlock('local_tasks_block');
    ...
    +    $this->drupalGet('node/1');
    +    $page->clickLink('Layout');
    

    Remove the block placement and do drupalGet('node/1/layout') please

  2. +++ b/core/modules/layout_builder/tests/src/Functional/LayoutBuilderQuickEditTest.php
    @@ -0,0 +1,72 @@
    +    // @todo This should not be necessary.
    +    $this->container->get('entity_field.manager')->clearCachedFieldDefinitions();
    

    I don't think this is necessary here, let's just remove it.

phenaproxima’s picture

Status: Needs work » Needs review
StatusFileSize
new3 KB
new1.2 KB

Done!

tim.plunkett’s picture

Status: Needs review » Reviewed & tested by the community

Thanks!

tim.plunkett’s picture

Adding credit

The last submitted patch, 4: 3043687-4-FAIL.patch, failed testing. View results

  • xjm committed d28a92f on 8.8.x
    Issue #3043687 by phenaproxima, tim.plunkett, johndevman: Layout Builder...

  • xjm committed fafda5f on 8.7.x
    Issue #3043687 by phenaproxima, tim.plunkett, johndevman: Layout Builder...
xjm’s picture

Status: Reviewed & tested by the community » Fixed

Committed to 8.8.x and cherry-picked to 8.7.x. Thanks!

johnwebdev’s picture

Status: Fixed » Closed (fixed)

Automatically closed - issue fixed for 2 weeks with no activity.