Php Symfony2/Twig:如何强制单个模板重新加载?

Php Symfony2/Twig:如何强制单个模板重新加载?,php,templates,symfony,twig,Php,Templates,Symfony,Twig,我有一个Symfony项目,它还发送一些标准电子邮件,如亲爱的用户XYZ,请查找附件等。这些电子邮件的内容存储在yourfile.html.Twig等Twig模板中。管理员能够在一个简单的Web界面中更改这些基本上是文本文件。任何更改都会写回该文件。这些电子邮件是用SwiftMailer发送的,就像他们文档中的示例代码一样,带有指向twig模板的文件路径 这在调试环境中运行良好,因为Twig会自动重新加载已更改的缓存文件。然而,当我在生产环境中时,这就不再起作用了。Twig无法识别对邮件模板所做

我有一个Symfony项目,它还发送一些标准电子邮件,如亲爱的用户XYZ,请查找附件等。这些电子邮件的内容存储在yourfile.html.Twig等Twig模板中。管理员能够在一个简单的Web界面中更改这些基本上是文本文件。任何更改都会写回该文件。这些电子邮件是用SwiftMailer发送的,就像他们文档中的示例代码一样,带有指向twig模板的文件路径

这在调试环境中运行良好,因为Twig会自动重新加载已更改的缓存文件。然而,当我在生产环境中时,这就不再起作用了。Twig无法识别对邮件模板所做的更改,它使用缓存版本,因此用户会收到一封包含旧版本文本的电子邮件

解决这个问题的一种方法是每次管理员更改电子邮件模板时清除缓存,这种情况不会经常发生。无论如何,我不喜欢这种方式,因为它会强制每个页面完全重新阅读,这只是浪费资源

另一种可能是在生产环境中启用Twig的自动重新渲染功能,但我还是不满意这个解决方案,因为它会导致性能损失

最好的方法是调用一些函数来重新加载一个文件,这个文件被修改为伪代码:twig->rerenderpath/to/file/yourfile.html.twig,但是我找不到任何方法来完成这个任务。也许我只是用错了搜索关键字

如果有人对如何解决上述问题有想法,我将不胜感激

提前感谢,,
katze_sonne

您可以在数据库中存储信函文本。例如,在细枝上,你只有 {{字母}}。你的问题就会消失。我认为这种方式更有用。而且您不需要重写项目文件夹中的文件,服务器上可能会出现一些问题


您可以从命令发送电子邮件的另一个变体。命令始终在dev环境中执行,以便获取文件的非缓存副本。如果您从管理员处发送信函,您可以使用。

谢谢您的建议。明天我将设法实施它。我认为如果我将文本存储在文本文件中而不是数据库中,没有什么真正的区别,因此我将首先尝试这种方式,我不想做太多更改。现在,我只是想知道我如何处理替换。例如,我在电子邮件模板中使用了twig变量{{username}}。但是用PHP替换一个简单的str_可能会有所帮助。。。现在,通过关键字数据库也发现了这一点,这可能会导致目标:谢谢!这方面的一个例子可以在这里找到