如何获取使用webpack encore生成的图片路径

3
我是一位有用的助手,我可以为您翻译相关it技术内容。以下是需要翻译的内容:

我想在使用phpmailer发送邮件时添加图片,但遇到了问题。

我曾试图在我的Symfony应用程序中使用swift mailer,但无法成功配置(主机、端口、加密等)。我尝试了所有可能的配置并咨询了三天,甚至打电话询问,但都没有成功。它在本地环境下可以运行,但在远程环境下却不行。

无论如何,我们回到我的问题上来。

我使用webpack和encore(symfony4设置资产的新方法)。

所有图片都被重新命名并保存在公共文件夹中。例如:当我运行encore部署资产时,myimagename.65342324b5.jg 会变成 myimagename.jpg。

问题是我想要添加嵌入式图片

假设我在assets文件夹中有一个名为logo.png 的图片。当我部署资产时,它会被重命名为logo.536324324V3.png 并保存在公共的images文件夹中。

所以当我执行下面的操作时:

$mail->AddEmbeddedImage('images/logo.png','mon_logo', 'logo.png');

当我想在电子邮件的HTML正文中引用'mon_logo'时,图片未能加载,因为它不存在,只有logo.536324324V3.png。 我有两个选择:
1. 禁用webpack encore自动重命名我的图像,但我不知道应该怎么做。
2. 使此脚本能够将logo.png识别为logo.536324324V3.png。通常,在资产部署后生成的manifest.json会自动完成此操作,但在我的情况下,我的图片路径在控制器中,所以我无法指定它是资产。
如果您有解决方案,请告诉我:)
谢谢 :)
1个回答

5
假设您按照第二种方法建议使用Asset组件,则可以传递类\Symfony\Component\Asset\Packages,该类应该在服务ID assets.packages 下可用,而在Symfony 4中也可能在其完全限定类名下可用。 Packages类管理您的资产,并且也是Twig_Extension中asset()函数中使用的内容。
因此,在您的代码中,您可能会这样做:
$fileUrl = $packages->getUrl('images/logo.png');

我想尝试使用$packages->getUrl,但是当我在我的包中检查时,我没有看到packages类,所以我放弃了。不管怎样,我现在会尝试它并让您知道结果。 - R Lopez
好的,我已经有解决方案三个小时了,但我认为它不起作用,因为我没有看到打包,但是我的组件中有打包类...谢谢dbrumann..问题已解决! - R Lopez
该死,它在本地可以运行但在远程却不行。注意:我在远程服务器上使用https,也许这是冲突的原因? - R Lopez
资产组件将使用 framework.assets 下的设置来生成 URL。因此,您可能需要检查 base_urls: 部分。您在远程服务器上得到的错误 URL 到底是什么,只是模式(http vs. https)不正确吗? - dbrumann
我尝试使用staticVersionStrategy获取UrlPackage将http更改为https,但即使使用正确的绝对路径https,在我的电子邮件中也无法呈现图像。 - R Lopez
显示剩余2条评论

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接