diff -u b/core/modules/filter/src/Plugin/Filter/FilterEntityEmbed.php b/core/modules/filter/src/Plugin/Filter/FilterEntityEmbed.php
--- b/core/modules/filter/src/Plugin/Filter/FilterEntityEmbed.php
+++ b/core/modules/filter/src/Plugin/Filter/FilterEntityEmbed.php
@@ -107,7 +107,7 @@
static $depth = 0;
$depth++;
- if ($depth > 20) {
+ if ($depth > 2) {
throw new RecursiveRenderingException(
sprintf('Recursive rendering detected when rendering embedded %s entity %s.', $entity_type, $entity->id())
);
@@ -126,7 +126,9 @@
}
catch (\Exception $e) {
$this->logger->error($e->getMessage());
- $output = $this->t('An error occured while loading the entity.');
+ $output = $this->t('An error occured while loading the entity: @message', [
+ '@message' => $e->getMessage(),
+ ]);
}
$this->replaceNodeContent($node, $output);
only in patch2:
unchanged:
--- /dev/null
+++ b/core/modules/filter/tests/src/Kernel/FilterEmbedTest.php
@@ -0,0 +1,137 @@
+container->get('plugin.manager.filter');
+ $bag = new FilterPluginCollection($manager, []);
+ $this->filters = $bag->getAll();
+
+ $this->installSchema('system', 'sequences');
+ $this->installSchema('node', 'node_access');
+ $this->installEntitySchema('user');
+ $this->installEntitySchema('node');
+ $this->installEntitySchema('date_format');
+ $this->installConfig('system');
+ $this->installConfig('field');
+ $this->installConfig('filter');
+ $this->installConfig('node');
+ $this->installConfig('text');
+ $this->installConfig('datetime');
+ DateFormat::load('medium')
+ ->setPattern('Y-m-d H:i:s O')
+ ->save();
+
+ $type = NodeType::create([
+ 'type' => 'article',
+ 'name' => 'Article',
+ ]);
+ $type->save();
+ node_add_body_field($type);
+
+ // Add another text format specifying all possible properties.
+ $format = FilterFormat::create([
+ 'format' => 'custom_format',
+ 'name' => 'Custom format',
+ ]);
+ $format->setFilterConfig('entity_embed', [
+ 'status' => 1,
+ ]);
+ $format->save();
+ }
+
+ /**
+ * Tests the media embed filter.
+ */
+ public function testEmbedFilter() {
+ // Get media embed filter.
+ $filter = $this->filters['entity_embed'];
+ $account = User::create([
+ 'name' => $this->randomString(),
+ ]);
+ $account->save();
+ $container = \Drupal::getContainer();
+ $container->get('current_user')->setAccount($account);
+ $node = Node::create([
+ 'type' => 'article',
+ 'title' => 'Foo title',
+ 'uid' => $account->id(),
+ 'status' => 1,
+ ]);
+ $node->save();
+ $node_uuid = $node->uuid();
+
+ // Render entity.
+ /** @var \Drupal\Core\Entity\EntityTypeManagerInterface $view_builder */
+ $view_builder = \Drupal::entityTypeManager();
+ $build = $view_builder->getViewBuilder($node->getEntityTypeId())->view($node, 'teaser');
+ /** @var \Drupal\Core\Render\RendererInterface $renderer */
+ $renderer = \Drupal::service('renderer');
+ $rendered_node = $renderer->renderPlain($build)->__toString();
+
+ // Test filter using data-entity-embed-display attribute.
+ $input = '';
+ $expected = $rendered_node;
+ $actual = $filter->process($input, 'und')->getProcessedText();
+ $this->assertSame($expected, $actual);
+
+ // Try using the filter with a formatter.
+ $node2 = Node::create([
+ 'type' => 'article',
+ 'title' => 'Foo title 2',
+ 'uid' => $account->id(),
+ 'status' => 1,
+ ]);
+ $node2->save();
+ $node2->body->value = $input;
+ $node2->body->format = 'custom_format';
+ $node2->save();
+ $build = $view_builder->getViewBuilder($node2->getEntityTypeId())->view($node2);
+ $rendered_node2 = $renderer->renderPlain($build)->__toString();
+ $this->assertContains($rendered_node, $rendered_node2);
+
+ // Recursion.
+ $node2->body->value = '';
+ $node2->body->format = 'custom_format';
+ $node2->save();
+ $build = $view_builder->getViewBuilder($node2->getEntityTypeId())->view($node2);
+ $rendered_node2 = $renderer->renderPlain($build)->__toString();
+ $this->assertContains('Recursive rendering detected', $rendered_node2);
+
+ }
+
+}