在Symfony 5项目中,使用Mailer ()函数创建电子邮件。在使用的小枝模板($templatedEmail->htmlTemplate(..))中将图像嵌入到
<img src="{{ email.image('@v_images/user-'~user.id~'/v.jpg') }}">若要包含特定于用户的图像,请执行以下操作。这个很好用。当试图将该图像传递给liip过滤器时
<img src="{{ email.image('@v_images/user-'~user.id~'/v.jpg') | imagine_filter('v_watermark') }}">图像不再渲染了。我在考虑要应用的解析器设置,以使liip能够从非标准目标路径中读取-但没有找到任何合理的设置。文件没有给我带来任何有用的信息。对于如何使liip与Mailer嵌入式图像一起工作的任何提示,我都有很大的帮助。
编辑(谢谢@ArleighHix):
我还尝试在调用中嵌套过滤器,如
<img src="{{ email.image('@v_images/user-'~user.id~'/v.jpg' | imagine_filter('v_watermark')) }}">导致以下错误:
Unable to find template "@v_images/user-1https:/127.0.0.1:8000/media/cache/resolve/v_watermark/v.jpg" (looked into: [SENSIBLE_LOCAL_PATH_IN_PROJECT]).我不知道到底发生了什么,但这条路似乎被奇怪地连在一起.
发布于 2021-04-23 10:57:39
基于这个文档
如果资产需要绝对URL,请使用absolute_url() Twig
<img src="{{ absolute_url(asset('images/logo.png')) }}" alt="Symfony!"/>
<link rel="shortcut icon" href="{{ absolute_url('favicon.png') }}">解决方案1
我认为这个应该有效:
<img src="{{ email.image((absolute_url(asset('@v_images')) ~ /user-'~user.id~'/v.jpg) | imagine_filter('v_watermark')) }}">解决方案2
如果它不起作用,您应该添加一个带基url的gloabl变量。
twig.yaml
twig:
globals:
app_base_url: '127.0.0.1:8000' // Put your base url here并将其用作:
<img src="{{ email.image(app_base_url ~ asset('@v_images') ~ /user-'~user.id~'/v.jpg) | imagine_filter('v_watermark')) }}">当然,当你在网上发布你的网站时,base_url会改变。您可以使用服务参数'%app.base_url%'。
在配置文件中定义它:
services_dev.yaml
parameters:
app.base_url: 'https://127.0.0.1:8000/'services_prod.yaml
parameters:
app.base_url: 'https://your.website.url/'然后将您的twig.yaml更新为
twig:
globals:
app_base_url: '%app.base_url%'https://stackoverflow.com/questions/67215721
复制相似问题