如何在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
相关产品推荐
相关产品推荐

