gpt4 book ai didi

php - 使用 Symfony Mailer 在 Twig 的模板化电子邮件中嵌入 Webpack Assets

转载 作者:行者123 更新时间:2023-12-02 19:51:40 26 4
gpt4 key购买 nike

Symfony's mailer documentation说可以很容易地嵌入图像:

<img
src="{{ email.image('@images/logo.png') }}"
alt="Logo">

然而,我的所有 Assets 都是由 Webpack 和 Encore 构建的。我也使用 Assets list 文件,因为每个 Assets 的名称中都有一个 chunkhash。

在这种情况下如何使用 Twig 嵌入图像?我试过:

<img
src="{{ email.image(asset('build/images/logo.png')) }}"
alt="Logo">

但这行不通。我最终得到一个异常(exception),即“缺少模板”。如果我使用来自静态位置的图像,这当然很有效。

最佳答案

如文档所述:定义一个 Twig 命名空间,指向存储图像的任何目录,例如:

# config/packages/twig.yaml
twig:
paths:
# point this wherever your images live
public/build/: build

接下来,在您的电子邮件模板中:

{# '@build/' refers to the Twig namespace defined earlier #}
<img src="{{ email.image('@build/logo.png') }}" alt="Logo">
<img src="{{ email.image('@build/subdir/logo.png') }}" alt="Logo">

如果构建的图像有一些随机后缀,这将不起作用,例如当 .enableVersioning()webpack.config.js 配置文件中定义时。


如果您启用了版本控制策略,您可以执行以下操作:

# config/packages/twig.yaml
twig:
paths:
public/: public

并使用字符串连接运算符 ~ 构建模板名称:

{# '@public' refers to the Twig namespace defined earlier #}
<img src="{{ email.image('@public' ~ asset('build/logo.png')) }}" alt="Logo">

关于php - 使用 Symfony Mailer 在 Twig 的模板化电子邮件中嵌入 Webpack Assets ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58037781/

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