diff --git a/src/Symfony/Component/AssetMapper/ImportMap/ImportMapRenderer.php b/src/Symfony/Component/AssetMapper/ImportMap/ImportMapRenderer.php index ef955fca1447c..58bb9c0e347df 100644 --- a/src/Symfony/Component/AssetMapper/ImportMap/ImportMapRenderer.php +++ b/src/Symfony/Component/AssetMapper/ImportMap/ImportMapRenderer.php @@ -62,6 +62,11 @@ public function render(string|array $entryPoint, array $attributes = []): string continue; } + // for subdirectories or CDNs, the import name needs to be the full URL + if (str_starts_with($importName, '/') && $this->assetPackages) { + $importName = $this->assetPackages->getUrl(ltrim($importName, '/')); + } + $preload = $data['preload'] ?? false; if ('css' !== $data['type']) { $importMap[$importName] = $path; diff --git a/src/Symfony/Component/AssetMapper/Tests/ImportMap/ImportMapRendererTest.php b/src/Symfony/Component/AssetMapper/Tests/ImportMap/ImportMapRendererTest.php index a0d90e0cc5c15..6d53e93c8599d 100644 --- a/src/Symfony/Component/AssetMapper/Tests/ImportMap/ImportMapRendererTest.php +++ b/src/Symfony/Component/AssetMapper/Tests/ImportMap/ImportMapRendererTest.php @@ -54,6 +54,10 @@ public function testBasicRender() 'path' => 'https://ga.jspm.io/npm:es-module-shims', 'type' => 'js', ], + '/assets/implicitly-added' => [ + 'path' => '/assets/implicitly-added-d1g35t.js', + 'type' => 'js', + ], ]); $assetPackages = $this->createMock(Packages::class); @@ -92,6 +96,8 @@ public function testBasicRender() $this->assertStringNotContainsString('', $html); // remote js $this->assertStringContainsString('"remote_js": "https://cdn.example.com/assets/remote-d1g35t.js"', $html); + // both the key and value are prefixed with the subdirectory + $this->assertStringContainsString('"/subdirectory/assets/implicitly-added": "/subdirectory/assets/implicitly-added-d1g35t.js"', $html); } public function testNoPolyfill() pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy