You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Twig的include模板中传递嵌入式图片?

解决方案:Twig邮件模板中传递嵌入式图片CID到子模板

问题核心

你遇到的问题本质是:cid:Branding并非Twig变量,而是邮件渲染时识别的嵌入式图片标识字符串——主模板中不存在名为Branding的变量,直接传递会触发未定义错误;而直接写cid:Branding会被Twig判定为语法错误。

可行解决方法

方法1:传递完整CID字符串字面量

在主模板里,直接把'cid:Branding'作为字符串变量传给页脚模板:

{% include 'email/footer.html.twig' with {'brandingCid': 'cid:Branding'} %}

在页脚模板footer.html.twig中,直接用该变量作为图片src:

<img src="{{ brandingCid }}" alt="branding" />

方法2:从PHP层传递CID值

Symfony的Email->embed()方法会返回生成的CID字符串,你可以把这个值作为模板变量传入主模板,再传递给子模板:

// PHP代码中获取CID并传入模板
$brandingCid = $email->embed($branding['content'], 'Branding', $branding['mimeType']);

$email->htmlTemplate('email/main.html.twig', [
    'brandingCid' => $brandingCid
]);

主模板中传递变量给页脚:

{% include 'email/footer.html.twig' with {'brandingCid': brandingCid} %}

页脚模板同样使用{{ brandingCid }}作为图片src。

方法3:全局变量复用(可选)

如果多个模板都需要使用该CID,可以在Twig配置中注册全局变量,或者在邮件构建时将CID设为全局模板变量,避免重复传递。

内容的提问来源于stack exchange,提问作者Rilves

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.15 18:35:36