gpt4 book ai didi

使用 liip imagine_filter 的 Symfony 5 Mailer 嵌入图像

转载 作者:行者123 更新时间:2023-12-05 06:01:25 25 4
gpt4 key购买 nike

在 Symfony 5 项目中,电子邮件是使用 Mailer 组件的 TemplatedEmail() 函数创建的。在使用的 Twig 模板($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]).

我不确定到底发生了什么,但路径似乎奇怪地连接在一起......

最佳答案

我认为你应该使用 absolute_url()结合 asset() .

基于此doc

If you need absolute URLs for assets, use the absolute_url() Twig

<img src="{{ absolute_url(asset('images/logo.png')) }}" alt="Symfony!"/>

<link rel="shortcut icon" href="{{ absolute_url('favicon.png') }}">

方案一

我认为这个应该可行:

<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%'

关于使用 liip imagine_filter 的 Symfony 5 Mailer 嵌入图像,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/67215721/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com