diff --git a/core/lib/Drupal/Core/GeneratedLink.php b/core/lib/Drupal/Core/GeneratedLink.php index eb35bc6..bfd9769 100644 --- a/core/lib/Drupal/Core/GeneratedLink.php +++ b/core/lib/Drupal/Core/GeneratedLink.php @@ -7,6 +7,7 @@ namespace Drupal\Core; +use Drupal\Component\Utility\SafeStringInterface; use Drupal\Core\Render\BubbleableMetadata; /** @@ -15,7 +16,7 @@ * Note: not to be confused with \Drupal\Core\Link, which is for passing around * ungenerated links (typically link text + route name + route parameters). */ -class GeneratedLink extends BubbleableMetadata { +class GeneratedLink extends BubbleableMetadata implements SafeStringInterface { /** * The HTML string value containing a link. @@ -46,4 +47,18 @@ public function setGeneratedLink($generated_link) { return $this; } + /** + * {@inheritdoc} + */ + public function __toString() { + return (string) $this->generatedLink; + } + + /** + * {@inheritdoc} + */ + public function jsonSerialize() { + return $this->__toString(); + } + } diff --git a/core/lib/Drupal/Core/Utility/LinkGenerator.php b/core/lib/Drupal/Core/Utility/LinkGenerator.php index fd282e9..21f7617 100644 --- a/core/lib/Drupal/Core/Utility/LinkGenerator.php +++ b/core/lib/Drupal/Core/Utility/LinkGenerator.php @@ -159,6 +159,7 @@ public function generate($text, Url $url, $collect_bubbleable_metadata = FALSE) if (!$collect_bubbleable_metadata) { $url_string = $url->toString($collect_bubbleable_metadata); + $generated_link = new GeneratedLink(); } else { $generated_url = $url->toString($collect_bubbleable_metadata); @@ -174,7 +175,7 @@ public function generate($text, Url $url, $collect_bubbleable_metadata = FALSE) // either rendered or escaped. $result = SafeString::create('' . $variables['text'] . ''); - return $collect_bubbleable_metadata ? $generated_link->setGeneratedLink($result) : $result; + return $generated_link->setGeneratedLink($result); } }