core/lib/Drupal/Core/Render/Renderer.php | 2 +- core/modules/big_pipe/src/Render/BigPipe.php | 5 +++-- .../tests/src/FunctionalJavascript/BigPipeRegressionTest.php | 10 ++-------- .../src/RenderPlaceholderMessageTestController.php | 1 - 4 files changed, 6 insertions(+), 12 deletions(-) diff --git a/core/lib/Drupal/Core/Render/Renderer.php b/core/lib/Drupal/Core/Render/Renderer.php index 4e98db7..a624c0f 100644 --- a/core/lib/Drupal/Core/Render/Renderer.php +++ b/core/lib/Drupal/Core/Render/Renderer.php @@ -653,7 +653,7 @@ protected function replacePlaceholders(array &$elements) { return FALSE; } - // The 'status messages' placeholder' needs to be special cased, because it + // The 'status messages' placeholder needs to be special cased, because it // depends on global state that can be modified when other placeholders are // being rendered: any code can add messages to render. // This violates the principle that each lazy builder must be able to render diff --git a/core/modules/big_pipe/src/Render/BigPipe.php b/core/modules/big_pipe/src/Render/BigPipe.php index 5b45678..00ec4a2 100644 --- a/core/modules/big_pipe/src/Render/BigPipe.php +++ b/core/modules/big_pipe/src/Render/BigPipe.php @@ -547,7 +547,7 @@ protected function getPlaceholderOrder($html) { } $placeholders = array_unique($placeholders); - // The 'status messages' placeholder' needs to be special cased, because it + // The 'status messages' placeholder needs to be special cased, because it // depends on global state that can be modified when other placeholders are // being rendered: any code can add messages to render. // This violates the principle that each lazy builder must be able to render @@ -567,7 +567,8 @@ protected function getPlaceholderOrder($html) { 'callback=Drupal%5CCore%5CRender%5CElement%5CStatusMessages%3A%3ArenderMessages&args[0]=error&token=35b549cb', ]; - // Render placeholders in the appropriate order. + // Return placeholder IDs in DOM order, but with the 'status messages' at + // the end, if it exists. $ordered_placeholders = array_merge( array_diff($placeholders, $possible_message_placeholders), array_intersect($placeholders, $possible_message_placeholders) diff --git a/core/modules/big_pipe/tests/src/FunctionalJavascript/BigPipeRegressionTest.php b/core/modules/big_pipe/tests/src/FunctionalJavascript/BigPipeRegressionTest.php index addda90..3243345 100644 --- a/core/modules/big_pipe/tests/src/FunctionalJavascript/BigPipeRegressionTest.php +++ b/core/modules/big_pipe/tests/src/FunctionalJavascript/BigPipeRegressionTest.php @@ -48,13 +48,7 @@ public function setUp() { * @see https://www.drupal.org/node/2698811 */ public function testCommentForm_2698811() { - $this->assertTrue($this->container->get('module_installer')->install([ 'node', - 'comment', - 'history', - 'editor', - 'ckeditor', - 'filter', - ], TRUE), 'Installed modules.'); + $this->assertTrue($this->container->get('module_installer')->install(['comment', 'history', 'ckeditor'], TRUE), 'Installed modules.'); // Ensure an `article` node type exists. $this->createContentType(['type' => 'article']); @@ -118,7 +112,7 @@ public function testCommentForm_2698811() { } /** - * Ensure BigPipe renders the "messages" placeholder last. + * Ensure messages set in placeholders always appear. * * @see https://www.drupal.org/node/2712935 */ diff --git a/core/modules/system/tests/modules/render_placeholder_message_test/src/RenderPlaceholderMessageTestController.php b/core/modules/system/tests/modules/render_placeholder_message_test/src/RenderPlaceholderMessageTestController.php index 7aeaadb..f02f0b6 100644 --- a/core/modules/system/tests/modules/render_placeholder_message_test/src/RenderPlaceholderMessageTestController.php +++ b/core/modules/system/tests/modules/render_placeholder_message_test/src/RenderPlaceholderMessageTestController.php @@ -70,7 +70,6 @@ protected function build(array $placeholder_order) { return $renderer->render($build, FALSE); }); - $reordered = []; foreach ($placeholder_order as $placeholder) { $reordered[$placeholder] = $build['#attached']['placeholders'][$placeholder];