diff --git a/src/TwigTweakExtension.php b/src/TwigTweakExtension.php index 9473462..cc88132 100644 --- a/src/TwigTweakExtension.php +++ b/src/TwigTweakExtension.php @@ -333,7 +333,7 @@ class TwigTweakExtension extends AbstractExtension { } /** - * Generates a URL from an internal path. + * Generates a URL from an internal or external path. * * @param string $user_input * User input for a link or path. @@ -355,7 +355,7 @@ class TwigTweakExtension extends AbstractExtension { } } if (UrlHelper::isExternal($user_input)) { - return Url::fromUri($user_input, $options); + return Url::fromUri($user_input, $options); } if (!in_array($user_input[0], ['/', '#', '?'])) { $user_input = '/' . $user_input; diff --git a/tests/src/Functional/TwigTweakTest.php b/tests/src/Functional/TwigTweakTest.php index b309037..23716cf 100644 --- a/tests/src/Functional/TwigTweakTest.php +++ b/tests/src/Functional/TwigTweakTest.php @@ -265,6 +265,11 @@ final class TwigTweakTest extends BrowserTestBase { $xpath = sprintf('//div[@class = "tt-url"]/div[@data-case="with-langcode" and text() = "%s"]', $url); $this->assertXpath($xpath); + // -- External URL. + $url = 'https://example.com/node?foo=bar&page=1#here'; + $xpath = sprintf('//div[@class = "tt-url"]/div[@data-case="external" and text() = "%s"]', $url); + $this->assertXpath($xpath); + // -- Link. $url = Url::fromUserInput('/node/1/edit', ['absolute' => TRUE]); $link = Link::fromTextAndUrl('Edit', $url)->toString(); diff --git a/tests/twig_tweak_test/templates/twig-tweak-test.html.twig b/tests/twig_tweak_test/templates/twig-tweak-test.html.twig index 28b978e..2490f0c 100644 --- a/tests/twig_tweak_test/templates/twig-tweak-test.html.twig +++ b/tests/twig_tweak_test/templates/twig-tweak-test.html.twig @@ -54,6 +54,7 @@
{{ drupal_url('node/1', {absolute: true}) }}
{{ drupal_url('node/1', {absolute: true, langcode: 'ru'}) }}
+
{{ drupal_url('https://example.com/node?foo=bar', {query: {page: 1}, fragment: 'here'}) }}