Issue #3043687 by phenaproxima, tim.plunkett, johndevman: Layout Builder's Quick Edit integration causes fatals when using field blocks for entities other than the one being viewed
parent
99382fb84b
commit
d28a92f7bb
|
@ -312,7 +312,7 @@ class QuickEditIntegration implements ContainerInjectionInterface {
|
||||||
* @see \Drupal\layout_builder\Plugin\Block\FieldBlock
|
* @see \Drupal\layout_builder\Plugin\Block\FieldBlock
|
||||||
*/
|
*/
|
||||||
private function supportQuickEditOnComponent(array $component, FieldableEntityInterface $entity) {
|
private function supportQuickEditOnComponent(array $component, FieldableEntityInterface $entity) {
|
||||||
if (isset($component['content']['#field_name'], $component['#base_plugin_id']) && $component['#base_plugin_id'] === 'field_block') {
|
if (isset($component['content']['#field_name'], $component['#base_plugin_id']) && $component['#base_plugin_id'] === 'field_block' && $entity->hasField($component['content']['#field_name'])) {
|
||||||
return $entity->getFieldDefinition($component['content']['#field_name'])->isDisplayConfigurable('view');
|
return $entity->getFieldDefinition($component['content']['#field_name'])->isDisplayConfigurable('view');
|
||||||
}
|
}
|
||||||
return FALSE;
|
return FALSE;
|
||||||
|
|
|
@ -0,0 +1,67 @@
|
||||||
|
<?php
|
||||||
|
|
||||||
|
namespace Drupal\Tests\layout_builder\Functional;
|
||||||
|
|
||||||
|
use Drupal\Tests\BrowserTestBase;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Tests Layout Builder integration with Quick Edit.
|
||||||
|
*
|
||||||
|
* @group layout_builder
|
||||||
|
*/
|
||||||
|
class LayoutBuilderQuickEditTest extends BrowserTestBase {
|
||||||
|
|
||||||
|
/**
|
||||||
|
* {@inheritdoc}
|
||||||
|
*/
|
||||||
|
protected static $modules = [
|
||||||
|
'layout_builder',
|
||||||
|
'node',
|
||||||
|
'quickedit',
|
||||||
|
];
|
||||||
|
|
||||||
|
/**
|
||||||
|
* {@inheritdoc}
|
||||||
|
*/
|
||||||
|
protected function setUp() {
|
||||||
|
parent::setUp();
|
||||||
|
|
||||||
|
// Create two nodes.
|
||||||
|
$this->createContentType([
|
||||||
|
'type' => 'bundle_with_section_field',
|
||||||
|
'name' => 'Bundle with section field',
|
||||||
|
]);
|
||||||
|
$this->createNode([
|
||||||
|
'type' => 'bundle_with_section_field',
|
||||||
|
]);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Tests Quick Edit integration with a block from a different entity type.
|
||||||
|
*/
|
||||||
|
public function testPlaceFieldBlockFromDifferentEntityType() {
|
||||||
|
$page = $this->getSession()->getPage();
|
||||||
|
|
||||||
|
$this->drupalLogin($this->drupalCreateUser([
|
||||||
|
'configure any layout',
|
||||||
|
'administer node display',
|
||||||
|
'access in-place editing',
|
||||||
|
]));
|
||||||
|
|
||||||
|
// From the manage display page, go to manage the layout.
|
||||||
|
$this->drupalGet('admin/structure/types/manage/bundle_with_section_field/display/default');
|
||||||
|
$this->drupalPostForm(NULL, ['layout[enabled]' => TRUE], 'Save');
|
||||||
|
$this->drupalPostForm(NULL, ['layout[allow_custom]' => TRUE], 'Save');
|
||||||
|
|
||||||
|
// Place a field block for a user entity field.
|
||||||
|
$this->drupalGet('node/1/layout');
|
||||||
|
$page->clickLink('Add Block');
|
||||||
|
$page->clickLink('Name');
|
||||||
|
$page->pressButton('Add Block');
|
||||||
|
$page->pressButton('Save layout');
|
||||||
|
|
||||||
|
$this->drupalGet('node/1');
|
||||||
|
$this->assertSession()->statusCodeEquals(200);
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
Loading…
Reference in New Issue