我有一个罕见的情况,我需要特定资产的路线。我需要像在 Twig 中一样返回资产,但直接在控制器操作中返回。我也将 AssetMapper 组件用于版本化资产。
我尝试使用资产
Package
,就像资产组件文档建议的那样,但出现 FileNotFoundException (The file "images/logo/logo-full.webp" does not exist)
异常。
我的代码如下:
public function logo(): BinaryFileResponse {
$asset = new Asset(new EmptyVersionStrategy());
return $this->file($asset->getUrl('images/logo/logo-full.webp'));
}
我知道回复已经晚了,但我最近也发现了如何通过 AssetMapper 在控制器/服务中获取版本化资产,所以这里以防它对其他人有帮助:
您必须在构造函数(或控制器的方法)中自动连接
AssetMapperInterface
,例如:
public function __construct(
private AssetMapperInterface $assetMapper,
) {}
在您的代码中使用它,例如:
$actual_web_path = $this->assetMapper->getAsset("images/icon-foo.svg")->publicPath;
// It'll give you something like "images/icon-foo-102f9j102u2f8j.svg"