diff --git a/core/modules/views/src/Plugin/views/PluginBase.php b/core/modules/views/src/Plugin/views/PluginBase.php
index 8c1e31f..a11e159 100644
--- a/core/modules/views/src/Plugin/views/PluginBase.php
+++ b/core/modules/views/src/Plugin/views/PluginBase.php
@@ -377,7 +377,7 @@ protected function viewsTokenReplace($text, $tokens) {
'#context' => $twig_tokens,
);
- return $this->getRenderer()->render($build);
+ return (string) $this->getRenderer()->render($build);
}
else {
return $text;
diff --git a/core/modules/views/src/Plugin/views/display/Feed.php b/core/modules/views/src/Plugin/views/display/Feed.php
index 0798690..e4da10e 100644
--- a/core/modules/views/src/Plugin/views/display/Feed.php
+++ b/core/modules/views/src/Plugin/views/display/Feed.php
@@ -67,7 +67,7 @@ public static function buildResponse($view_id, $display_id, array $args = []) {
/** @var \Drupal\Core\Render\RendererInterface $renderer */
$renderer = \Drupal::service('renderer');
- $output = $renderer->renderRoot($build);
+ $output = (string) $renderer->renderRoot($build);
if (empty($output)) {
throw new NotFoundHttpException();
diff --git a/core/modules/views/src/Plugin/views/field/FieldPluginBase.php b/core/modules/views/src/Plugin/views/field/FieldPluginBase.php
index f17df18..415831f 100644
--- a/core/modules/views/src/Plugin/views/field/FieldPluginBase.php
+++ b/core/modules/views/src/Plugin/views/field/FieldPluginBase.php
@@ -1131,7 +1131,7 @@ public function advancedRender(ResultRow $values) {
else {
$value = $this->render($values);
if (is_array($value)) {
- $value = $this->getRenderer()->render($value);
+ $value = (string) $this->getRenderer()->render($value);
}
$this->last_render = $value;
$this->original_value = $value;
@@ -1144,7 +1144,7 @@ public function advancedRender(ResultRow $values) {
foreach ($raw_items as $count => $item) {
$value = $this->render_item($count, $item);
if (is_array($value)) {
- $value = $this->getRenderer()->render($value);
+ $value = (string) $this->getRenderer()->render($value);
}
$this->last_render = $value;
$this->original_value = $this->last_render;
@@ -1162,7 +1162,7 @@ public function advancedRender(ResultRow $values) {
}
if (is_array($value)) {
- $value = $this->getRenderer()->render($value);
+ $value = (string) $this->getRenderer()->render($value);
}
// This happens here so that renderAsLink can get the unaltered value of
// this field as a token rather than the altered value.
diff --git a/core/modules/views/src/Plugin/views/row/OpmlFields.php b/core/modules/views/src/Plugin/views/row/OpmlFields.php
index 2e936f5..4654bca 100644
--- a/core/modules/views/src/Plugin/views/row/OpmlFields.php
+++ b/core/modules/views/src/Plugin/views/row/OpmlFields.php
@@ -217,7 +217,7 @@ public function getField($index, $field_id) {
if (empty($this->view->style_plugin) || !is_object($this->view->style_plugin) || empty($field_id)) {
return '';
}
- return $this->view->style_plugin->getField($index, $field_id);
+ return (string) $this->view->style_plugin->getField($index, $field_id);
}
}
diff --git a/core/modules/views/src/Tests/Handler/FieldFieldTest.php b/core/modules/views/src/Tests/Handler/FieldFieldTest.php
index fd0da52..fb44dc6 100644
--- a/core/modules/views/src/Tests/Handler/FieldFieldTest.php
+++ b/core/modules/views/src/Tests/Handler/FieldFieldTest.php
@@ -251,18 +251,18 @@ public function testSimpleRender() {
$executable = Views::getView('test_field_field_test');
$executable->execute();
- $this->assertEqual(1, $executable->getStyle()->getField(0, 'id'));
- $this->assertEqual(3, $executable->getStyle()->getField(0, 'field_test'));
- $this->assertEqual(2, $executable->getStyle()->getField(1, 'id'));
+ $this->assertEqual(1, (string) $executable->getStyle()->getField(0, 'id'));
+ $this->assertEqual(3, (string) $executable->getStyle()->getField(0, 'field_test'));
+ $this->assertEqual(2, (string) $executable->getStyle()->getField(1, 'id'));
// @todo Switch this assertion to assertIdentical('', ...) when
// https://www.drupal.org/node/2488006 gets fixed.
- $this->assertEqual(0, $executable->getStyle()->getField(1, 'field_test'));
- $this->assertEqual(3, $executable->getStyle()->getField(2, 'id'));
- $this->assertEqual(8, $executable->getStyle()->getField(2, 'field_test'));
- $this->assertEqual(4, $executable->getStyle()->getField(3, 'id'));
- $this->assertEqual(5, $executable->getStyle()->getField(3, 'field_test'));
- $this->assertEqual(5, $executable->getStyle()->getField(4, 'id'));
- $this->assertEqual(6, $executable->getStyle()->getField(4, 'field_test'));
+ $this->assertEqual(0, (string) $executable->getStyle()->getField(1, 'field_test'));
+ $this->assertEqual(3, (string) $executable->getStyle()->getField(2, 'id'));
+ $this->assertEqual(8, (string) $executable->getStyle()->getField(2, 'field_test'));
+ $this->assertEqual(4, (string) $executable->getStyle()->getField(3, 'id'));
+ $this->assertEqual(5, (string) $executable->getStyle()->getField(3, 'field_test'));
+ $this->assertEqual(5, (string) $executable->getStyle()->getField(4, 'id'));
+ $this->assertEqual(6, (string) $executable->getStyle()->getField(4, 'field_test'));
}
/**
@@ -326,10 +326,10 @@ public function testFieldAliasRender() {
$executable->execute();
for ($i = 0; $i < 5; $i++) {
- $this->assertEqual($i + 1, $executable->getStyle()->getField($i, 'id'));
- $this->assertEqual('test ' . $i, $executable->getStyle()->getField($i, 'name'));
+ $this->assertEqual($i + 1, (string) $executable->getStyle()->getField($i, 'id'));
+ $this->assertEqual('test ' . $i, (string) $executable->getStyle()->getField($i, 'name'));
$entity = EntityTest::load($i + 1);
- $this->assertEqual('
test ' . $i . '', $executable->getStyle()->getField($i, 'name_alias'));
+ $this->assertEqual('
test ' . $i . '', (string) $executable->getStyle()->getField($i, 'name_alias'));
}
}
@@ -426,25 +426,25 @@ public function testRevisionRender() {
$executable = Views::getView('test_field_field_revision_test');
$executable->execute();
- $this->assertEqual(1, $executable->getStyle()->getField(0, 'id'));
- $this->assertEqual(1, $executable->getStyle()->getField(0, 'revision_id'));
- $this->assertEqual(1, $executable->getStyle()->getField(0, 'field_test'));
- $this->assertEqual('base value', $executable->getStyle()->getField(0, 'name'));
-
- $this->assertEqual(1, $executable->getStyle()->getField(1, 'id'));
- $this->assertEqual(2, $executable->getStyle()->getField(1, 'revision_id'));
- $this->assertEqual(2, $executable->getStyle()->getField(1, 'field_test'));
- $this->assertEqual('revision value1', $executable->getStyle()->getField(1, 'name'));
-
- $this->assertEqual(1, $executable->getStyle()->getField(2, 'id'));
- $this->assertEqual(3, $executable->getStyle()->getField(2, 'revision_id'));
- $this->assertEqual(3, $executable->getStyle()->getField(2, 'field_test'));
- $this->assertEqual('revision value2', $executable->getStyle()->getField(2, 'name'));
-
- $this->assertEqual(2, $executable->getStyle()->getField(3, 'id'));
- $this->assertEqual(4, $executable->getStyle()->getField(3, 'revision_id'));
- $this->assertEqual(4, $executable->getStyle()->getField(3, 'field_test'));
- $this->assertEqual('next entity value', $executable->getStyle()->getField(3, 'name'));
+ $this->assertEqual(1, (string) $executable->getStyle()->getField(0, 'id'));
+ $this->assertEqual(1, (string) $executable->getStyle()->getField(0, 'revision_id'));
+ $this->assertEqual(1, (string) $executable->getStyle()->getField(0, 'field_test'));
+ $this->assertEqual('base value', (string) $executable->getStyle()->getField(0, 'name'));
+
+ $this->assertEqual(1, (string) $executable->getStyle()->getField(1, 'id'));
+ $this->assertEqual(2, (string) $executable->getStyle()->getField(1, 'revision_id'));
+ $this->assertEqual(2, (string) $executable->getStyle()->getField(1, 'field_test'));
+ $this->assertEqual('revision value1', (string) $executable->getStyle()->getField(1, 'name'));
+
+ $this->assertEqual(1, (string) $executable->getStyle()->getField(2, 'id'));
+ $this->assertEqual(3, (string) $executable->getStyle()->getField(2, 'revision_id'));
+ $this->assertEqual(3, (string) $executable->getStyle()->getField(2, 'field_test'));
+ $this->assertEqual('revision value2', (string) $executable->getStyle()->getField(2, 'name'));
+
+ $this->assertEqual(2, (string) $executable->getStyle()->getField(3, 'id'));
+ $this->assertEqual(4, (string) $executable->getStyle()->getField(3, 'revision_id'));
+ $this->assertEqual(4, (string) $executable->getStyle()->getField(3, 'field_test'));
+ $this->assertEqual('next entity value', (string) $executable->getStyle()->getField(3, 'name'));
}
/**
@@ -484,33 +484,33 @@ public function testRevisionComplexRender() {
$executable = Views::getView('test_field_field_revision_complex_test');
$executable->execute();
- $this->assertEqual(1, $executable->getStyle()->getField(0, 'id'));
- $this->assertEqual(1, $executable->getStyle()->getField(0, 'revision_id'));
- $this->assertEqual($this->testUsers[0]->getTimeZone(), $executable->getStyle()->getField(0, 'timezone'));
- $this->assertEqual('1, 3, 7', $executable->getStyle()->getField(0, 'field_test_multiple'));
- $this->assertEqual('1', $executable->getStyle()->getField(0, 'field_test_multiple_1'));
- $this->assertEqual('3, 7', $executable->getStyle()->getField(0, 'field_test_multiple_2'));
-
- $this->assertEqual(1, $executable->getStyle()->getField(1, 'id'));
- $this->assertEqual(2, $executable->getStyle()->getField(1, 'revision_id'));
- $this->assertEqual($this->testUsers[1]->getTimeZone(), $executable->getStyle()->getField(1, 'timezone'));
- $this->assertEqual('0, 3, 5', $executable->getStyle()->getField(1, 'field_test_multiple'));
- $this->assertEqual('0', $executable->getStyle()->getField(1, 'field_test_multiple_1'));
- $this->assertEqual('3, 5', $executable->getStyle()->getField(1, 'field_test_multiple_2'));
-
- $this->assertEqual(1, $executable->getStyle()->getField(2, 'id'));
- $this->assertEqual(3, $executable->getStyle()->getField(2, 'revision_id'));
- $this->assertEqual($this->testUsers[2]->getTimeZone(), $executable->getStyle()->getField(2, 'timezone'));
- $this->assertEqual('9, 9, 9', $executable->getStyle()->getField(2, 'field_test_multiple'));
- $this->assertEqual('9', $executable->getStyle()->getField(2, 'field_test_multiple_1'));
- $this->assertEqual('9, 9', $executable->getStyle()->getField(2, 'field_test_multiple_2'));
-
- $this->assertEqual(2, $executable->getStyle()->getField(3, 'id'));
- $this->assertEqual(4, $executable->getStyle()->getField(3, 'revision_id'));
- $this->assertEqual($this->testUsers[3]->getTimeZone(), $executable->getStyle()->getField(3, 'timezone'));
- $this->assertEqual('2, 9, 9', $executable->getStyle()->getField(3, 'field_test_multiple'));
- $this->assertEqual('2', $executable->getStyle()->getField(3, 'field_test_multiple_1'));
- $this->assertEqual('9, 9', $executable->getStyle()->getField(3, 'field_test_multiple_2'));
+ $this->assertEqual(1, (string) $executable->getStyle()->getField(0, 'id'));
+ $this->assertEqual(1, (string) $executable->getStyle()->getField(0, 'revision_id'));
+ $this->assertEqual($this->testUsers[0]->getTimeZone(), (string) $executable->getStyle()->getField(0, 'timezone'));
+ $this->assertEqual('1, 3, 7', (string) $executable->getStyle()->getField(0, 'field_test_multiple'));
+ $this->assertEqual('1', (string) $executable->getStyle()->getField(0, 'field_test_multiple_1'));
+ $this->assertEqual('3, 7', (string) $executable->getStyle()->getField(0, 'field_test_multiple_2'));
+
+ $this->assertEqual(1, (string) $executable->getStyle()->getField(1, 'id'));
+ $this->assertEqual(2, (string) $executable->getStyle()->getField(1, 'revision_id'));
+ $this->assertEqual($this->testUsers[1]->getTimeZone(), (string) $executable->getStyle()->getField(1, 'timezone'));
+ $this->assertEqual('0, 3, 5', (string) $executable->getStyle()->getField(1, 'field_test_multiple'));
+ $this->assertEqual('0', (string) $executable->getStyle()->getField(1, 'field_test_multiple_1'));
+ $this->assertEqual('3, 5', (string) $executable->getStyle()->getField(1, 'field_test_multiple_2'));
+
+ $this->assertEqual(1, (string) $executable->getStyle()->getField(2, 'id'));
+ $this->assertEqual(3, (string) $executable->getStyle()->getField(2, 'revision_id'));
+ $this->assertEqual($this->testUsers[2]->getTimeZone(), (string) $executable->getStyle()->getField(2, 'timezone'));
+ $this->assertEqual('9, 9, 9', (string) $executable->getStyle()->getField(2, 'field_test_multiple'));
+ $this->assertEqual('9', (string) $executable->getStyle()->getField(2, 'field_test_multiple_1'));
+ $this->assertEqual('9, 9', (string) $executable->getStyle()->getField(2, 'field_test_multiple_2'));
+
+ $this->assertEqual(2, (string) $executable->getStyle()->getField(3, 'id'));
+ $this->assertEqual(4, (string) $executable->getStyle()->getField(3, 'revision_id'));
+ $this->assertEqual($this->testUsers[3]->getTimeZone(), (string) $executable->getStyle()->getField(3, 'timezone'));
+ $this->assertEqual('2, 9, 9', (string) $executable->getStyle()->getField(3, 'field_test_multiple'));
+ $this->assertEqual('2', (string) $executable->getStyle()->getField(3, 'field_test_multiple_1'));
+ $this->assertEqual('9, 9', (string) $executable->getStyle()->getField(3, 'field_test_multiple_2'));
}
/**
@@ -533,7 +533,7 @@ public function testMissingBundleFieldRender() {
// @todo Switch this assertion to assertIdentical('', ...) when
// https://www.drupal.org/node/2488006 gets fixed.
- $this->assertEqual(0, $executable->getStyle()->getField(1, 'field_test'));
+ $this->assertEqual(0, (string) $executable->getStyle()->getField(1, 'field_test'));
}
}
diff --git a/core/modules/views/src/Tests/QueryGroupByTest.php b/core/modules/views/src/Tests/QueryGroupByTest.php
index 768aaaf..ad6e28e 100644
--- a/core/modules/views/src/Tests/QueryGroupByTest.php
+++ b/core/modules/views/src/Tests/QueryGroupByTest.php
@@ -253,9 +253,9 @@ public function testGroupByFieldWithCardinality() {
$this->executeView($view);
$this->assertEqual(2, count($view->result));
- $this->assertEqual(3, $view->getStyle()->getField(0, 'id'));
+ $this->assertEqual(3, (string) $view->getStyle()->getField(0, 'id'));
$this->assertEqual('1', $view->getStyle()->getField(0, 'field_test'));
- $this->assertEqual(6, $view->getStyle()->getField(1, 'id'));
+ $this->assertEqual(6, (string) $view->getStyle()->getField(1, 'id'));
$this->assertEqual('2', $view->getStyle()->getField(1, 'field_test'));
$entities[2]->field_test[0]->value = 3;
@@ -267,15 +267,15 @@ public function testGroupByFieldWithCardinality() {
$this->executeView($view);
$this->assertEqual(5, count($view->result));
- $this->assertEqual(3, $view->getStyle()->getField(0, 'id'));
+ $this->assertEqual(3, (string) $view->getStyle()->getField(0, 'id'));
$this->assertEqual('1', $view->getStyle()->getField(0, 'field_test'));
- $this->assertEqual(3, $view->getStyle()->getField(1, 'id'));
+ $this->assertEqual(3, (string) $view->getStyle()->getField(1, 'id'));
$this->assertEqual('2', $view->getStyle()->getField(1, 'field_test'));
- $this->assertEqual(1, $view->getStyle()->getField(2, 'id'));
+ $this->assertEqual(1, (string) $view->getStyle()->getField(2, 'id'));
$this->assertEqual('3', $view->getStyle()->getField(2, 'field_test'));
- $this->assertEqual(1, $view->getStyle()->getField(3, 'id'));
+ $this->assertEqual(1, (string) $view->getStyle()->getField(3, 'id'));
$this->assertEqual('4', $view->getStyle()->getField(3, 'field_test'));
- $this->assertEqual(1, $view->getStyle()->getField(4, 'id'));
+ $this->assertEqual(1, (string) $view->getStyle()->getField(4, 'id'));
$this->assertEqual('5', $view->getStyle()->getField(4, 'field_test'));
// Check that translated values are correctly retrieved and are not grouped
@@ -288,7 +288,7 @@ public function testGroupByFieldWithCardinality() {
$this->executeView($view);
$this->assertEqual(6, count($view->result));
- $this->assertEqual(3, $view->getStyle()->getField(5, 'id'));
+ $this->assertEqual(3, (string) $view->getStyle()->getField(5, 'id'));
$this->assertEqual('6', $view->getStyle()->getField(5, 'field_test'));
}
diff --git a/core/tests/Drupal/Tests/Core/Render/RendererPlaceholdersTest.php b/core/tests/Drupal/Tests/Core/Render/RendererPlaceholdersTest.php
index a3fe908..4472bcd 100644
--- a/core/tests/Drupal/Tests/Core/Render/RendererPlaceholdersTest.php
+++ b/core/tests/Drupal/Tests/Core/Render/RendererPlaceholdersTest.php
@@ -237,8 +237,8 @@ public function testUncacheableParent($element, $args, $placeholder_cid_keys, ar
// No #cache on parent element.
$element['#prefix'] = '
#cache disabled
';
$output = $this->renderer->renderRoot($element);
- $this->assertSame('
#cache disabled
This is a rendered placeholder!
', $output, 'Output is overridden.');
- $this->assertSame('
#cache disabled
This is a rendered placeholder!
', $element['#markup'], '#markup is overridden.');
+ $this->assertSame('
#cache disabled
This is a rendered placeholder!
', (string) $output, 'Output is overridden.');
+ $this->assertSame('
#cache disabled
This is a rendered placeholder!
', (string) $element['#markup'], '#markup is overridden.');
$expected_js_settings = [
'foo' => 'bar',
'dynamic_animal' => $args[0],
@@ -283,9 +283,9 @@ public function testCacheableParent($test_element, $args, $placeholder_cid_keys,
$element['#cache'] = ['keys' => ['placeholder_test_GET']];
$element['#prefix'] = '
#cache enabled, GET
';
$output = $this->renderer->renderRoot($element);
- $this->assertSame('
#cache enabled, GET
This is a rendered placeholder!
', $output, 'Output is overridden.');
+ $this->assertSame('
#cache enabled, GET
This is a rendered placeholder!
', (string) $output, 'Output is overridden.');
$this->assertTrue(isset($element['#printed']), 'No cache hit');
- $this->assertSame('
#cache enabled, GET
This is a rendered placeholder!
', $element['#markup'], '#markup is overridden.');
+ $this->assertSame('
#cache enabled, GET
This is a rendered placeholder!
', (string) $element['#markup'], '#markup is overridden.');
$expected_js_settings = [
'foo' => 'bar',
'dynamic_animal' => $args[0],
@@ -321,9 +321,9 @@ public function testCacheableParent($test_element, $args, $placeholder_cid_keys,
$element['#cache'] = ['keys' => ['placeholder_test_GET']];
$element['#prefix'] = '
#cache enabled, GET
';
$output = $this->renderer->renderRoot($element);
- $this->assertSame('
#cache enabled, GET
This is a rendered placeholder!
', $output, 'Output is overridden.');
+ $this->assertSame('
#cache enabled, GET
This is a rendered placeholder!
', (string) $output, 'Output is overridden.');
$this->assertFalse(isset($element['#printed']), 'Cache hit');
- $this->assertSame('
#cache enabled, GET
This is a rendered placeholder!
', $element['#markup'], '#markup is overridden.');
+ $this->assertSame('
#cache enabled, GET
This is a rendered placeholder!
', (string) $element['#markup'], '#markup is overridden.');
$expected_js_settings = [
'foo' => 'bar',
'dynamic_animal' => $args[0],
@@ -351,9 +351,9 @@ public function testCacheableParentWithPostRequest($test_element, $args) {
$element['#cache'] = ['keys' => ['placeholder_test_POST']];
$element['#prefix'] = '
#cache enabled, POST
';
$output = $this->renderer->renderRoot($element);
- $this->assertSame('
#cache enabled, POST
This is a rendered placeholder!
', $output, 'Output is overridden.');
+ $this->assertSame('
#cache enabled, POST
This is a rendered placeholder!
', (string) $output, 'Output is overridden.');
$this->assertTrue(isset($element['#printed']), 'No cache hit');
- $this->assertSame('
#cache enabled, POST
This is a rendered placeholder!
', $element['#markup'], '#markup is overridden.');
+ $this->assertSame('
#cache enabled, POST
This is a rendered placeholder!
', (string) $element['#markup'], '#markup is overridden.');
$expected_js_settings = [
'foo' => 'bar',
'dynamic_animal' => $args[0],
@@ -383,7 +383,7 @@ public function testRecursivePlaceholder() {
$output = $this->renderer->renderRoot($element);
$this->assertEquals('
This is a rendered placeholder!
', $output, 'The output has been modified by the indirect, recursive placeholder #lazy_builder callback.');
- $this->assertSame($element['#markup'], '
This is a rendered placeholder!
', '#markup is overridden by the indirect, recursive placeholder #lazy_builder callback.');
+ $this->assertSame((string) $element['#markup'], '
This is a rendered placeholder!
', '#markup is overridden by the indirect, recursive placeholder #lazy_builder callback.');
$expected_js_settings = [
'dynamic_animal' => $args[0],
];
@@ -546,9 +546,9 @@ public function testRenderChildrenPlaceholdersDifferentArguments() {
HTML;
- $this->assertSame($expected_output, $output, 'Output is not overridden.');
+ $this->assertSame($expected_output, (string) $output, 'Output is not overridden.');
$this->assertTrue(isset($element['#printed']), 'No cache hit');
- $this->assertSame($expected_output, $output, '#markup is not overridden.');
+ $this->assertSame($expected_output, (string) $element['#markup'], '#markup is not overridden.');
$expected_js_settings = [
'foo' => 'bar',
'dynamic_animal' => [$args_1[0] => TRUE, $args_2[0] => TRUE, $args_3[0] => TRUE],
@@ -595,7 +595,7 @@ public function testRenderChildrenPlaceholdersDifferentArguments() {
// GET request: #cache enabled, cache hit.
$element = $test_element;
$output = $this->renderer->renderRoot($element);
- $this->assertSame($expected_output, $output, 'Output is not overridden.');
+ $this->assertSame($expected_output, (string) $output, 'Output is not overridden.');
$this->assertFalse(isset($element['#printed']), 'Cache hit');
$this->assertSame($element['#attached']['drupalSettings'], $expected_js_settings, '#attached is modified; both the original JavaScript setting and the ones added by each placeholder #lazy_builder callback exist.');
@@ -604,8 +604,8 @@ public function testRenderChildrenPlaceholdersDifferentArguments() {
unset($test_element['#cache']);
$element = $test_element;
$output = $this->renderer->renderRoot($element);
- $this->assertSame($expected_output, $output, 'Output is not overridden.');
- $this->assertSame($expected_output, $output, '#markup is not overridden.');
+ $this->assertSame($expected_output, (string) $output, 'Output is not overridden.');
+ $this->assertSame($expected_output, (string) $element['#markup'], '#markup is not overridden.');
$this->assertSame($element['#attached']['drupalSettings'], $expected_js_settings, '#attached is modified; both the original JavaScript setting and the ones added by each #lazy_builder callback exist.');
}
diff --git a/core/tests/Drupal/Tests/Core/Render/RendererTest.php b/core/tests/Drupal/Tests/Core/Render/RendererTest.php
index a2f91ea..8439c0a 100644
--- a/core/tests/Drupal/Tests/Core/Render/RendererTest.php
+++ b/core/tests/Drupal/Tests/Core/Render/RendererTest.php
@@ -10,6 +10,7 @@
use Drupal\Core\Cache\Cache;
use Drupal\Core\Cache\CacheableDependencyInterface;
use Drupal\Core\Render\Element;
+use Drupal\Core\Render\SafeString;
use Drupal\Core\Template\Attribute;
/**
@@ -43,7 +44,7 @@ public function testRenderBasic($build, $expected, callable $setup_code = NULL)
$setup_code();
}
- $this->assertSame($expected, $this->renderer->render($build));
+ $this->assertSame($expected, (string) $this->renderer->render($build));
}
/**
@@ -470,10 +471,10 @@ protected function assertAccess($build, $access) {
$sensitive_content = $this->randomContextValue();
$build['#markup'] = $sensitive_content;
if ($access) {
- $this->assertSame($sensitive_content, $this->renderer->render($build));
+ $this->assertSame($sensitive_content, (string) $this->renderer->render($build));
}
else {
- $this->assertSame('', $this->renderer->render($build));
+ $this->assertSame('', (string) $this->renderer->render($build));
}
}
@@ -653,8 +654,8 @@ public function testRenderCacheProperties(array $expected_results) {
],
// Collect expected property names.
'#cache_properties' => array_keys(array_filter($expected_results)),
- 'child1' => ['#markup' => 1],
- 'child2' => ['#markup' => 2],
+ 'child1' => ['#markup' => new SafeString(1, 'UTF-8')],
+ 'child2' => ['#markup' => new SafeString(2, 'UTF-8')],
'#custom_property' => ['custom_value'],
];
$this->renderer->render($element);
diff --git a/core/themes/engines/twig/twig.engine b/core/themes/engines/twig/twig.engine
index 9f8bc4a..3c2ce61 100644
--- a/core/themes/engines/twig/twig.engine
+++ b/core/themes/engines/twig/twig.engine
@@ -7,6 +7,7 @@
use Drupal\Component\Utility\SafeMarkup;
use Drupal\Core\Extension\Extension;
+use Drupal\Core\Render\SafeString;
/**
* Implements hook_theme().
@@ -103,7 +104,8 @@ function twig_render_template($template_file, array $variables) {
$output['debug_info'] .= "\n\n";
$output['debug_suffix'] .= "\n\n\n";
}
- return SafeMarkup::set(implode('', $output));
+ // This output has already been rendered and is therefore considered safe.
+ return new SafeString(implode('', $output), 'UTF-8');
}
/**