diff --git a/core/modules/file/file.module b/core/modules/file/file.module index 269a6d43088c77dba8b2733f1d3adaee0da8db69..97c25bfdafca186f0c2be97e3563ecf71799e137 100644 --- a/core/modules/file/file.module +++ b/core/modules/file/file.module @@ -1522,7 +1522,7 @@ function template_preprocess_file_link(&$variables) { $variables['attributes']->addClass($classes); $variables['file_size'] = format_size($file->getSize() ?? 0); - $variables['link'] = Link::fromTextAndUrl($link_text, $url->setOptions($options))->toRenderable(); + $variables['link'] = Link::fromTextAndUrl($link_text, $url->mergeOptions($options))->toRenderable(); } /** diff --git a/core/modules/file/tests/src/Kernel/Formatter/FileEntityFormatterTest.php b/core/modules/file/tests/src/Kernel/Formatter/FileEntityFormatterTest.php index d48a58089a5685cd1a19eb01a69683d493536238..a32838bd650ffcdcf448376664d486cc1434a08e 100644 --- a/core/modules/file/tests/src/Kernel/Formatter/FileEntityFormatterTest.php +++ b/core/modules/file/tests/src/Kernel/Formatter/FileEntityFormatterTest.php @@ -16,7 +16,7 @@ class FileEntityFormatterTest extends KernelTestBase { /** * {@inheritdoc} */ - protected static $modules = ['file', 'user']; + protected static $modules = ['file', 'user', 'file_test']; /** * The files. @@ -171,4 +171,22 @@ public function testFormatterFileSize() { } } + /** + * Tests the file_link field formatter using a query string. + */ + public function testFormatterFileLinkWithQueryString() { + $file = File::create([ + 'uri' => 'dummy-external-readonly://file-query-string?foo=bar', + 'filename' => 'file-query-string', + ]); + $file->save(); + $file_link = [ + '#theme' => 'file_link', + '#file' => $file, + ]; + + $output = \Drupal::service('renderer')->renderRoot($file_link); + $this->assertStringContainsString($this->fileUrlGenerator->generate('dummy-external-readonly://file-query-string?foo=bar')->toUriString(), $output); + } + }