diff --git a/core/modules/views/src/Tests/ModuleTest.php b/core/modules/views/src/Tests/ModuleTest.php index f7eb9d7ed4bedeb5f73b9deb3ad0bb9f306a3b30..0c7ff8b7a0150e594c4a63574c35fa4d58c0a615 100644 --- a/core/modules/views/src/Tests/ModuleTest.php +++ b/core/modules/views/src/Tests/ModuleTest.php @@ -275,20 +275,28 @@ public function testViewsPluginList() { public function testViewsEmbedView() { $this->enableModules(array('user')); + /** @var \Drupal\Core\Render\RendererInterface $renderer */ + $renderer = \Drupal::service('renderer'); + $result = views_embed_view('test_argument'); - $this->assertEqual(count($result['#view']->result), 5); + $renderer->renderPlain($result); + $this->assertEqual(count($result['view_build']['#view']->result), 5); $result = views_embed_view('test_argument', 'default', 1); - $this->assertEqual(count($result['#view']->result), 1); + $renderer->renderPlain($result); + $this->assertEqual(count($result['view_build']['#view']->result), 1); $result = views_embed_view('test_argument', 'default', '1,2'); - $this->assertEqual(count($result['#view']->result), 2); + $renderer->renderPlain($result); + $this->assertEqual(count($result['view_build']['#view']->result), 2); $result = views_embed_view('test_argument', 'default', '1,2', 'John'); - $this->assertEqual(count($result['#view']->result), 1); + $renderer->renderPlain($result); + $this->assertEqual(count($result['view_build']['#view']->result), 1); $result = views_embed_view('test_argument', 'default', '1,2', 'John,George'); - $this->assertEqual(count($result['#view']->result), 2); + $renderer->renderPlain($result); + $this->assertEqual(count($result['view_build']['#view']->result), 2); } /** diff --git a/core/modules/views/views.module b/core/modules/views/views.module index 0faa5bbad75e8ceef6f7181e5366c0461ff6e6e5..3122a74f499fe91f3cce3bae7b9a9be50b588748 100644 --- a/core/modules/views/views.module +++ b/core/modules/views/views.module @@ -728,6 +728,10 @@ function _views_query_tag_alter_condition(AlterableInterface $query, &$condition * valid. But things like 'page' or 'block' should work here. * @param ... * Any additional parameters will be passed as arguments. + * + * @return array|null + * A renderable array containing the view output or NULL if the display ID + * of the view to be executed doesn't exist. */ function views_embed_view($name, $display_id = 'default') { $args = func_get_args(); @@ -739,7 +743,12 @@ function views_embed_view($name, $display_id = 'default') { return; } - return $view->preview($display_id, $args); + return [ + '#type' => 'view', + '#name' => $name, + '#display_id' => $display_id, + '#arguments' => $args, + ]; } /**