From f08a96ea683883ed0a81ae7e8f1b1bc72edca6a6 Mon Sep 17 00:00:00 2001 From: Alex Pott <alex.a.pott@googlemail.com> Date: Sun, 23 Oct 2016 13:40:40 -0700 Subject: [PATCH] Issue #2819593 by dawehner, webflo: Link title double escaping in Link::preRenderLink --- core/lib/Drupal/Core/Render/Element/Link.php | 2 +- core/modules/system/src/Tests/Theme/EngineTwigTest.php | 2 ++ .../templates/twig_theme_test.link_generator.html.twig | 2 ++ 3 files changed, 5 insertions(+), 1 deletion(-) diff --git a/core/lib/Drupal/Core/Render/Element/Link.php b/core/lib/Drupal/Core/Render/Element/Link.php index 535d9bb51b9b..3888c7938d04 100644 --- a/core/lib/Drupal/Core/Render/Element/Link.php +++ b/core/lib/Drupal/Core/Render/Element/Link.php @@ -92,7 +92,7 @@ public static function preRenderLink($element) { /** @var \Drupal\Core\Utility\LinkGenerator $link_generator */ $link_generator = \Drupal::service('link_generator'); $generated_link = $link_generator->generate($element['#title'], $element['#url']->setOptions($options)); - $element['#markup'] = $generated_link->getGeneratedLink(); + $element['#markup'] = $generated_link; $generated_link->merge(BubbleableMetadata::createFromRenderArray($element)) ->applyTo($element); } diff --git a/core/modules/system/src/Tests/Theme/EngineTwigTest.php b/core/modules/system/src/Tests/Theme/EngineTwigTest.php index a79c01dd6302..51d092d44b11 100644 --- a/core/modules/system/src/Tests/Theme/EngineTwigTest.php +++ b/core/modules/system/src/Tests/Theme/EngineTwigTest.php @@ -77,6 +77,7 @@ public function testTwigLinkGenerator() { $link_generator = $this->container->get('link_generator'); + $generated_url = Url::fromRoute('user.register', [], ['absolute' => TRUE])->toString(TRUE)->getGeneratedUrl(); $expected = [ 'link via the linkgenerator: ' . $link_generator->generate('register', new Url('user.register', [], ['absolute' => TRUE])), 'link via the linkgenerator: ' . $link_generator->generate('register', new Url('user.register', [], ['absolute' => TRUE, 'attributes' => ['foo' => 'bar']])), @@ -84,6 +85,7 @@ public function testTwigLinkGenerator() { 'link via the linkgenerator: ' . $link_generator->generate('register', new Url('user.register', [], ['attributes' => ['id' => 'kitten']])), 'link via the linkgenerator: ' . $link_generator->generate('register', new Url('user.register', [], ['attributes' => ['class' => ['llama', 'kitten', 'panda']]])), 'link via the linkgenerator: ' . $link_generator->generate(Markup::create('<span>register</span>'), new Url('user.register', [], ['absolute' => TRUE])), + 'link via the linkgenerator: <a href="' . $generated_url . '"><span>register</span><svg></svg></a>', ]; // Verify that link() has the ability to bubble cacheability metadata: diff --git a/core/modules/system/tests/modules/twig_theme_test/templates/twig_theme_test.link_generator.html.twig b/core/modules/system/tests/modules/twig_theme_test/templates/twig_theme_test.link_generator.html.twig index 5d20ce22b902..a836aec93c61 100644 --- a/core/modules/system/tests/modules/twig_theme_test/templates/twig_theme_test.link_generator.html.twig +++ b/core/modules/system/tests/modules/twig_theme_test/templates/twig_theme_test.link_generator.html.twig @@ -5,3 +5,5 @@ <div>link via the linkgenerator: {{ link('register', 'route:user.register', attributes) }}</div> {% set title %}<span>register</span>{% endset %} <div>link via the linkgenerator: {{ link(title, test_url) }}</div> +{% set title %}<span>register</span><svg></svg>{% endset %} +<div>link via the linkgenerator: {{ link(title, test_url) }}</div> -- GitLab