From 57fb699bdd96d607f65626c6cec733d77b07757d Mon Sep 17 00:00:00 2001 From: Alex Pott Date: Thu, 13 Aug 2015 16:48:19 +0100 Subject: [PATCH] Issue #2549719 by dawehner: View::preRenderViewElement should use $element['view_build'] always --- core/modules/views/src/Element/View.php | 2 +- .../views/src/Tests/ViewElementTest.php | 13 ++++++- .../test_views/views.view.test_view_embed.yml | 37 +++++++++++++++++++ 3 files changed, 49 insertions(+), 3 deletions(-) diff --git a/core/modules/views/src/Element/View.php b/core/modules/views/src/Element/View.php index 676f6d0dc93b..38ca26d09afb 100644 --- a/core/modules/views/src/Element/View.php +++ b/core/modules/views/src/Element/View.php @@ -58,7 +58,7 @@ class View extends RenderElement { if ($view && $view->access($element['#display_id'])) { if (!empty($element['#embed'])) { - $element += $view->preview($element['#display_id'], $element['#arguments']); + $element['view_build'] = $view->preview($element['#display_id'], $element['#arguments']); } else { // Add contextual links to the view. We need to attach them to the dummy diff --git a/core/modules/views/src/Tests/ViewElementTest.php b/core/modules/views/src/Tests/ViewElementTest.php index d54211b083fb..e55a21cadbb5 100644 --- a/core/modules/views/src/Tests/ViewElementTest.php +++ b/core/modules/views/src/Tests/ViewElementTest.php @@ -127,7 +127,7 @@ class ViewElementTest extends ViewTestBase { // Set the content as our rendered array. $render = $this->render; - $render['#embed'] = TRUE; + $render['view']['#embed'] = TRUE; $this->setRawContent($renderer->renderRoot($render)); $xpath = $this->xpath('//div[@class="views-element-container"]'); @@ -173,7 +173,7 @@ class ViewElementTest extends ViewTestBase { // Test the render array again. $render = $this->render; - $render['#embed'] = TRUE; + $render['view']['#embed'] = TRUE; $this->setRawContent($renderer->renderRoot($render)); // There should be 1 row in the results, 'John' arg 25. $xpath = $this->xpath('//div[@class="view-content"]/div'); @@ -183,6 +183,15 @@ class ViewElementTest extends ViewTestBase { $this->drupalGet('views_test_data_element_embed_form'); $xpath = $this->xpath('//div[@class="view-content"]/div'); $this->assertEqual(count($xpath), 1); + + // Tests the render array with an exposed filter. + $render = $this->render; + $render['view']['#display_id'] = 'embed_2'; + $render['view']['#embed'] = TRUE; + $this->setRawContent($renderer->renderRoot($render)); + + // Ensure that the exposed form is rendered. + $this->assertEqual(1, count($this->xpath('//form[@class="views-exposed-form"]'))); } } diff --git a/core/modules/views/tests/modules/views_test_config/test_views/views.view.test_view_embed.yml b/core/modules/views/tests/modules/views_test_config/test_views/views.view.test_view_embed.yml index 48e2c7bd9b16..98ea92d71cbf 100644 --- a/core/modules/views/tests/modules/views_test_config/test_views/views.view.test_view_embed.yml +++ b/core/modules/views/tests/modules/views_test_config/test_views/views.view.test_view_embed.yml @@ -59,3 +59,40 @@ display: display_title: Embedded id: embed_1 position: 1 + embed_2: + display_options: + defaults: + filters: false + exposed_form: false + exposed_form: + type: basic + options: + submit_button: Filter + reset_button: true + reset_button_label: Reset + exposed_sorts_label: 'Sort by' + expose_sort_order: true + sort_asc_label: Asc + sort_desc_label: Desc + filters: + id: + field: id + id: id + relationship: none + table: views_test_data + plugin_id: numeric + exposed: true + expose: + operator_id: '' + label: Id + description: '' + identifier: id + required: false + remember: false + multiple: false + remember_roles: + authenticated: authenticated + display_plugin: embed + display_title: Embedded + id: embed_2 + position: 2