【发布时间】:2014-02-10 01:42:56
【问题描述】:
我有一个 Symfony 项目,它还发送一些标准电子邮件,例如“尊敬的用户 XYZ,请查找附件”等 - 这些电子邮件的内容存储在 Twig 模板中,例如 yourfile.html.twig。管理员可以在一个简单的 Web 界面中更改那些基本的“文本文件”。任何更改都会写回文件。电子邮件是使用 SwiftMailer 发送的,就像在他们的文档中的示例代码中一样,带有指向 twig 模板的文件路径。
这在调试环境中运行良好 - 因为 Twig 会自动重新呈现已更改的缓存文件。但是,当我在生产环境中时,这不再起作用。 Twig 无法识别对邮件模板所做的更改,它使用缓存版本(因此用户会收到一封包含旧版本文本的电子邮件)。
解决此问题的一种方法是在管理员每次更改电子邮件模板时清除缓存(这种情况不会经常发生)。无论如何,我不喜欢这种方式,因为它会强制重新渲染每个页面,这只是浪费资源......
另一种可能性是在生产环境中也启用 Twig 的“自动重新渲染”功能,但我再次对这个解决方案不满意,因为它会导致性能损失......
执行此操作的“最佳”方法是调用某个函数来重新呈现已更改的文件(伪代码:twig->rerender("path/to/file/yourfile.html.twig")) ,但我找不到任何方法来实现这一点。也许我只是用了错误的关键字进行搜索?
如果有人知道如何解决上述问题,我将不胜感激!
提前致谢, katze_sonne
【问题讨论】:
-
这方面的一个例子可以在这里找到stackoverflow.com/questions/14234464/…
标签: php templates symfony twig